![]() |
Re: Laden von Array dauert sehr sehr lange
Also wie folgend: (Hier auch gleich mal IntToStr(I) ersetzt ;-)
Code:
...:cat:...
for j := 0 to config_sl.Count - 1 do
begin [color=#ff0000]Dummy := config_sl.Strings[j];[/color] [color=#2400ff]strI := IntToStr(i);[/color] //Version auslesen if (Pos([color=#2400ff]strI[/color] + '_HXPTT_XPVersion=', [color=#ff0000]Dummy[/color]) = 1) then begin pos_i := Pos('=', [color=#ff0000]Dummy[/color]); xp_version_s := Copy([color=#ff0000]Dummy[/color], pos_i + 1, Length([color=#ff0000]Dummy[/color])); end; ... von hier an [color=#ff0000]Dummy[/color] ind [color=#2400ff]strI[/color] nutzen ;-) |
Re: Laden von Array dauert sehr sehr lange
achso meinst du das
hmm das bringt was ? werde es propieren |
Re: Laden von Array dauert sehr sehr lange
hat schon einiges gebraucht
thx ist zwar immer noch langsam aber viel besser als zum anfang - viel besser werde noch den tip d3g propieren |
Re: Laden von Array dauert sehr sehr lange
Weitere Optimierungen, die Du überlegen solltest. Folgende Voraussetzungen:
Unter diesen Voraussetzungen können wir auf die äußere Schleife (for i := 1 to k_max_xp_tweak_i d) komplett verzichten. Das gibt einen Perfomance-Gewinn im Bereich des k_max_xp_tweak_i-fachen!
Code:
Abschließend solltest Du noch wissen, daß
for j := 0 to config_sl.Count - 1 do
begin [color=#ff0000]{ Als erstes holen wir uns den aktuellen String und zerlegen diesen in seine Einzelteile. [i]ValueName[/i] hält am Ende den Wert nach dem ersten Underscode bis vor dem "=" [i]strIdx[/i] ist eine Helfervariable, welche den Wert vor dem ersten Underscore hält [i]Idx[/i] ist der Integerwert von strIdx, und speichert den gewünschten Index im Array }[/color] // get current string Dummy := config_sl.Strings[j]; // extract value name from current string ValueName := Copy(Dummy, 1, Pred(Pos('=', Dummy))); // extract index of value from string (first as string) strIdx := Copy(ValueName, 1, Pred(Pos('_', ValueName)); // then as integer for array index Idx := StrToIntDef(strIdx, -1); if Idx = -1 then // invalid index, continue with next value in string list Continue; // remove index value from value name for faster string comparison Delete(ValueName, 1, Succ(Length(strIdx))); //Version auslesen if 'HXPTT_XPVersion' = ValueName then xp_version_s := Copy(Dummy, Succ(Pos('=', Dummy)), MaxInt); //XP Version prüfen if (XP_Version_Pruefen_GU(xp_version_s) = True) then begin //Daten ins Array schreiben //Titel [color=#ff0000]{ Ab hier fleißig mit ValueName arbeiten. Dadurch können auf weitere POS-Suchen, Stringverknüpfungen und Umwandlungen verzichtet werden ;-) }[/color] if 'HXPTT_Titel' = ValueName then g_button_cfg_ar[Idx].titel_s := Copy(Dummy, Succ(Pos('=', Dummy)), MaxInt) //XPVersion else if 'HXPTT_XPVersion' = ValueName then g_button_cfg_ar[Idx].xpversion_s := Copy(Dummy, Succ(Pos('=', Dummy)), MaxInt) ... und so weiter und so fort ;-) else .... end; end; Pred(Idx) = I - 1 und Succ(Idx) = I + 1 ...:cat:... |
Re: Laden von Array dauert sehr sehr lange
Und, wie sieht es jetzt aus :stupid:
...:cat:... |
Re: Laden von Array dauert sehr sehr lange
@sakura
ähhhhh ich bin jetzt ein bischen ungläubig hatte vor der änderung ca. 15:547 s und jetzt trau ich mich garnicht zu sagen ca 00:031 !!!!!!!!!!!!!!!! wie ist denn möglich ich hab mit so ca. 5 - 7 s gerechnet erkläre mal bitte |
Re: Laden von Array dauert sehr sehr lange
Zitat:
Die erste und wohl größte Verbesserung ist es gewesen, die Schleife for I := 0 to k_max_xp_tweak_i zu entfernen. Dadurch sparst Du Dir "k_max_xp_tweak_i" Läufe durch die gesamte StringListe config_sl ein. Das ist schon mal ein direkter Performancegewinn, der einlauchten sollte. Der nächste wichtige Punkt war es die String-Operationen zu optimieren. Delphi hat zwar mit die besten Stringroutinen, die es gibt, aber man kann es immer etwas beeinflussen. So zum Beispiel folgende Deiner Punkte
Ich hoffe, daß das einen kleinen Einblick in die Optimierungslogik gibt. Man könnte noch eine Menge rausholen, aber ich glaube die aktuellen Werte sind gut genug, daß weiterer Aufwand hier nicht lohnen würde ;-) ...:cat:... |
Re: Laden von Array dauert sehr sehr lange
Von
Zitat:
Zitat:
Zitat:
...:cat:... |
Re: Laden von Array dauert sehr sehr lange
tiefen dank
das mit den stringoperation war schon klar das dort immer eine funktion aufgerufen wird nur muss ich zugeben ich wußte nicht wie ich es anders hinbekommen sollte noch mal neige ich mein haupt und bin dir und den anderen zum tiefen dank verpflichtet |
Re: Laden von Array dauert sehr sehr lange
:oops: Nicht gleich so dick auftragen, daß hat bei mir Nebenwirkungen :mrgreen:
Danke! ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:25 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