AGB  ·  Datenschutz  ·  Impressum  







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

Stringliste Umkehren

Ein Thema von simon790 · begonnen am 14. Mär 2008 · letzter Beitrag vom 30. Jan 2023
Antwort Antwort
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: Stringliste Umkehren

  Alt 15. Mär 2008, 10:40
Zitat von Hansa:
Es sind fast 400.000 Zeilen. Add hat gegenüber exchange einen geringen Vorteil von 0,7 % = 3 Sek.
Putz mal Deine Brille! Wie hast Du denn das gemessen? Bei meinem nicht taufrischen Laptop habe ich für Add 89 ms und für Exchange 10 ms (400000 x 80 Byte). Ausserdem belegt die Add-Methode doppelt so viel Speicher, ist also nicht skalierbar:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
   NUM_ENTRIES = 400000;
   ENTRY = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789AAAA'+
           'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789AAAA';
var
   slDown : TStringlist;
   slUp : TStringList;
   i, j : integer;
   dtStart : TDateTime;
begin
   Button1.Enabled := False;

   // Füllen
   slDown := TStringList.Create;
   slDown.Capacity := NUM_ENTRIES;
   for i := 0 to NUM_ENTRIES-1 do
      slDown.add(ENTRY);
   Button1.Enabled := True;

   // Methode mit Add
   slUp := TStringList.Create;
   dtStart := Now;
   for i := slDown.Count-1 downto 0 do
      slUp.Add(slDown[i]);
   ShowMessage(Format('Add %d ms', [MillisecondsBetween(Now, dtStart)]));
   slUp.Free;

   // Methode mit Exchange
   dtStart := Now;
   j := 0;
   for i := slDown.count - 1 downto (slDown.count - 1) div 2 do
   begin
     slDown.exchange(i,j);
     inc(j);
   end;
   ShowMessage(Format('Exchange %d ms', [MillisecondsBetween(Now, dtStart)]));
   slDown.Free;
end;
[edit]Ahh, ich hab Deine geniale Messmethode erkannt: Du misst wahrscheinlich das Update des Memo mit. Warum trägst Du das ganze nicht noch in eine Datenbank ein und misst das ebenfalls dazu? Das Update des Memo mag ja ein paar Minuten dauern, das will ich mir nicht antun. Dadurch verschwindet die Messdifferenz im Nirvana.[/edit]
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:55 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