Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Code beschleunigen (https://www.delphipraxis.net/112938-code-beschleunigen.html)

Grolle 29. Apr 2008 21:45


Code beschleunigen
 
Hallo,

ich suche und ersetze Text in einer Excel-Spalte mit folgendem Code:
Delphi-Quellcode:
  Application.ProcessMessages;
  for i := 0 to sl.Count-1 do
  begin
    Label6.Caption := IntToStr(i);
    Label6.Refresh;
    if sl[i] <> '' then
    begin
      arr := explode(';',sl[i]);
      for j := 1 to 5324 do
      begin
        help := Sheet.Cells[j,13].Value;
        help := StringReplace(help,arr[0],arr[1],[rfReplaceAll]);
        Sheet.Cells[j,13].Value := help;
      end;
      arr := nil;
    end;
  end;
Beide Schleifen werden ca. 5300 mal durchlaufen. Wie kann ich da an der
Gechwindigkeit noch was drehen? (sl ist eine StringList)

Viele Grüße ...

stoxx 29. Apr 2008 22:41

Re: Code beschleunigen
 
StringReplace vom FastCode Projekt oder die JEdi Sachen sind auch schon schneller als Delphi ..

Eine Kopie sparen:

Delphi-Quellcode:
Sheet.Cells[j,13].Value := StringReplace(help,arr[0],arr[1],[rfReplaceAll]);
das langsamste wird aber wohl der Excel Zugriff sein.

Grolle 29. Apr 2008 22:43

Re: Code beschleunigen
 
Hi,

nein, ich ersetze einen String. arr ist ein dynamisches Array.

Viele Grüße ...

mkinzler 29. Apr 2008 22:44

Re: Code beschleunigen
 
Ist Excel während des Vorgangs sichtbar?

Grolle 29. Apr 2008 22:45

Re: Code beschleunigen
 
Im Moment schon. muss aber nicht!

mkinzler 29. Apr 2008 22:46

Re: Code beschleunigen
 
Es sollte dann schneller sein.

Grolle 29. Apr 2008 22:48

Re: Code beschleunigen
 
Hmm ich glaube ein par Sekunden bringt das schon. Ein Durchlauf der ersten Schleife dauert aber
immer noch ~ 24 Sek. Kann das sein?

stoxx 29. Apr 2008 22:50

Re: Code beschleunigen
 
Zitat:

Zitat von Grolle
Hmm ich glaube ein par Sekunden bringt das schon. Ein Durchlauf der ersten Schleife dauert aber
immer noch ~ 24 Sek. Kann das sein?

das label nur bei jedem 10. Durchlauf aktualisieren ...

Grolle 29. Apr 2008 23:21

Re: Code beschleunigen
 
Hi,

das bringt mir nochmal ne Sekunde (Label Refresh ganz raus)!
Mann, da muss doch noch was gehen :?

lbccaleb 29. Apr 2008 23:22

Re: Code beschleunigen
 
rausnehmen kannst ja dann auch noch arr := nil;
vllt bringt dir das auch noch mal nen wenig ein..


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:31 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz