AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Speicher sparen und Geschwindigeit erhöhen

Ein Thema von mika · begonnen am 14. Feb 2003 · letzter Beitrag vom 18. Feb 2003
 
Benutzerbild von mika
mika

Registriert seit: 25. Okt 2002
176 Beiträge
 
Delphi 6 Professional
 
#1

Speicher sparen und Geschwindigeit erhöhen

  Alt 14. Feb 2003, 11:38
Hallo alle!

ich hab mal wieder ein neues Problem. Ich habe vor einen Urlaubsplaner
zu schreiben, das Problem ist auch nicht der Code oder die Logik oder so.
Ich habe das Problem das mein Urlaubsplaner recht langsam ist, und je
mehr elemente ich in mein Dynamisches Array hänge desto länger braucht
er um ein einzelnes Element anzuhängen. Ich habe mir ausgerechnet was
ein Objekt anhand meiner Variablen für Speicher verbrauchen würde.
Aber wenn ich meinen verbrauchten Speicher nach dem laden durch die
anzahl der tage*personen teile bekomme ich einen viel größeren wert für
ein element raus

Meine beiden Probleme sind also die typischen: Wie spare ich Speicher und
wie bekomm ich den ganzen kram schneller? anstatt eines dynamischen arrays
eine tlist benutzen? oder doch lieber selber ne zweifach verkettte
dynamische liste (müsste vom prinzip ja sowas sein wie die tlist, halt
bloss selber)? ich weiss da echt nicht weiter.

Ich habe getestet auf ner guten maschine (p4-2ghz,256mb) und er hat bei
11 personen für das ganze jahr 2003 8mb speicher verballert und 15 sek.
gebraucht. bei 70 personen habe ich nach 5 minuten und 150mb das
programm abgebrochen (

nachstehend mal n bisschen code:


Delphi-Quellcode:

type

  TMyCoords = Packed Record
    Column: Word;
    Row: Word;
    Top: Word;
    Left: Word;
    Bottom: Word;
    Right: Word;
  End;

  TMyInformation = Packed Record
    msdDay: TDate;
    msdWDay: String[12];
    msdPerson: String[50];
    msdPersonNR: String[5];
    msdActualKosten: String[5];
    msdNormalKosten: String[5];
  End;

  TMySpecialDay = class(TShape)

    mytitel: TStaticText;
    constructor NCreate ( how: TCreateIt ); // Constructor
    destructor Destroy; override; // Destructor

    private
      msdID: Integer;
      msdState: Word;
      // ---
      msdCoords: TMyCoords;
      msdInfo: TMyInformation;
      // ---
      msdChanged: Boolean;
      msdStatebeforeChange: Word;
      msdSelected: Boolean;
      public
      procedure onMyMouseDown(Sender: TObject; Button: TMouseButton;
                              Shift: TShiftState; X, Y: Integer);
      procedure onMyMouseMove(Sender: TObject; Shift: TShiftState; X,
                              Y: Integer);
      procedure onMyMouseUp(Sender: TObject; Button: TMouseButton;
                            Shift: TShiftState; X, Y: Integer);
      procedure CreateLabel(var Lbl: TStaticText;
                                X,Y,W,H: Integer;
                                BorderStyle: TStaticBorderStyle;
                                Color,FontColor: TColor;
                                FontStyle: TFontStyles;
                                Capt: String;
                                Align: TAlignment;
                                FontSize: Integer);
  end;

var
  mySD: Array of TMySpecialDay;
erstellen tu ich das ganze über meinen constructor und indem ich
das array mit setlength(length + 1) erhöhe.

Weiss da jemand Rat?
mfg, Mika
:: don't Panic ::
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz