AGB  ·  Datenschutz  ·  Impressum  







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

[Optimieren] TStringList

Ein Thema von _rEdoX · begonnen am 14. Sep 2006 · letzter Beitrag vom 14. Sep 2006
Antwort Antwort
_rEdoX

Registriert seit: 2. Jun 2006
Ort: Bochum
24 Beiträge
 
Delphi 7 Professional
 
#1

[Optimieren] TStringList

  Alt 14. Sep 2006, 15:33
Delphi-Quellcode:
for i := 1 to length(plain.Text) do
      begin
        x := ord(plain.text[i]);
        if table[x] = '0then
          table[x] := inttostr((ord(dat.text[i])));
        if i mod 2000 = 0 then
        begin
          Progressbar1.Position := Progressbar1.Position + 1;
          Application.ProcessMessages;
        end;
      end;
Wie kann man das obrige optimieren? Dat,plain und table sind vom typ TStringlist.
0 ist der default Wert.

danke fuer jede hilfe

greetz felix
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#2

Re: [Optimieren] TStringList

  Alt 14. Sep 2006, 15:37
war quatsch
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: [Optimieren] TStringList

  Alt 14. Sep 2006, 15:38
Hallo,

erste Optimierung: Schreibe Plain.Text und Ord.Text in Hilfsvariablen. Ansonsten wird bei jedem Aufruf der Text erneut zusammengesetzt.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
_rEdoX

Registriert seit: 2. Jun 2006
Ort: Bochum
24 Beiträge
 
Delphi 7 Professional
 
#4

Re: [Optimieren] TStringList

  Alt 14. Sep 2006, 15:42
wow, danke =)))

Braucht noch 1 Sekunde davor 10 Minuten
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [Optimieren] TStringList

  Alt 14. Sep 2006, 20:16
Waaaaaas?????

Hab ich dich falsch verstanden oder hast du die Rechenzeit jetzt echt von 10 Minuten auf 1 Sekunde runtergekriegt???????????
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: [Optimieren] TStringList

  Alt 14. Sep 2006, 21:54
Delphi-Quellcode:
       
if table[x] = '0then
  table[x] := inttostr((ord(dat.text[i])));
ich gehe davon aus das Table[] als Table[Byte] of String deklariert wurde. Ändere die ab in

Delphi-Quellcode:
var
  table: array[char] of Char;

// table initalisiieren mit
FillChar(table, SizeOf(table), 0);

// in deiner Schleife nun

  x := plainText[I]; // x type Char
  if table[x] = #0 then
    table[x] := ordText[i];
damit optimierst du das IntToStr() weg, was sehr inperformant ist. In table[] stehen dann ASCII Zeichen die du wenn es nötig ist mit IntToStr(Ord(table[char(i)])) umwandeln kannst. Ich denke aber das das garnicht nötig sein wird.

Gruß Hagen
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: [Optimieren] TStringList

  Alt 14. Sep 2006, 21:57
Moin Cöster,

probier's mal aus.
Die ständige Verwendung von Text ist eine der stärksten Bremsen, die man einbauen kann.
(Du darfst es natürlich nicht mit ganz wenigen Zeilen versuchen).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: [Optimieren] TStringList

  Alt 14. Sep 2006, 22:02
Naja, ist eine kleine Optimerung. Selbst bei einem Text mit Milliarden von Zeichen kann es ja nur 256 unterschiedliche Zeichen geben. Da der NULL Terminator #0 im String nicht vorkommt also exakt 255 Möglichkeiten. Also selbst bei sehr langen String dürfte IntToStr() nur maximal 255 mal aufgerufen werden. Allerdings gehts mir garnicht um Performance sondern um Qualität im Source. Denn du hast deine Datentypen nicht sauber ausgewählt und versucht mit Strings zu rechnen. Ein Indiz für meine Behauptung sind die vielen TypCast die du anwendest -> table[ord(Char)] := IntToStr(Ord(char)) usw. Besser ist es eben gleich Table sauber zu deklarieren und dann mit table[char] := char; zu arbeiten.

Gruß Hagen
  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 00:04 Uhr.
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