![]() |
AW: RTL Performance D7 vs XE7
Zitat:
Zitat:
|
AW: RTL Performance D7 vs XE7
[QUOTE=Bernhard Geyer;1272270]
Zitat:
|
AW: RTL Performance D7 vs XE7
Zitat:
nur mal einiges was ich gern wissen täte :) mfg newbe |
AW: RTL Performance D7 vs XE7
Zitat:
Delphi-Quellcode:
gesetzt hat, dann wird bei IndexOf einfach ne lineare Suche gemacht, ansonsten eine binäre. So kann man auch Performance zum Fenster rauswerfen.
Sorted := True
|
AW: RTL Performance D7 vs XE7
Der FastMM kann InPlace-Realocations, also verkleinern/vergrößern, ohne daß der alte Speicherblock verschoben werden muß.
Vorallen bei größeren Speicherblöcken und wenn dahinter genug Platz ist. Das alte FastStringsProjekt wurde teilweise ins Delphi übernommen (irgenwann um/nach 2006). Generics sollte nicht schneller sein, als die nicht-generische Variante, bzw. gleich schnell. Im Prinzip sind dort "nur" die manuellen Casts durch automatische ersetzt, wobei damit der Compiler besser für Typsicherheit sorgen kann. Bei Listen, also vorallem wenn dir die Sortierung egal ist, wären die TDictionary<T>'s ein Überlegung wert, da sie eine optimalere Suchfunktion besitzen, als z.B. die TStringsList. Insgesamt hat man die generischen Listen oftmals um Hashlisten, Binäre suchen und Dergleichen aufgemotzt, was die alten Funktionen nicht immer hatten. |
AW: RTL Performance D7 vs XE7
@stevie
dachte sortet is bei TStringlist standardmäßig auf true? bin jetz leicht verwirrt. mfg |
AW: RTL Performance D7 vs XE7
Zitat:
|
AW: RTL Performance D7 vs XE7
achja stimmt... ich bin auch durch für heute :)
|
AW: RTL Performance D7 vs XE7
Zur Klarstellung: Der FastMM für Delphi 7 stammt nicht von mir und ich baue den auch nicht über DelphiSpeedUp ein. Die BorlndMM.dll muss man schon selbst austauschen.
Zitat:
An die Geschwindigkeit einer TList kommt TList<T> bei weitem nicht ran. Beispiel Worst-Case Szenario: 100.000 Einträge, letztes Element muss 10.000 Mal gefunden werden
Code:
TList: 0.299 Sekunden
TList<T>: 1.870 Sekunden Zitat:
Code:
Und das auf meinem nagel neuen PC. Im Büro habe ich eine um weiten langsamere Kiste stehen.
StringList Find: 1.993 Sekunden
Dictionary TryGetValue : 3.983 Sekunden Die Zeit, die beim Laden der Daten drauf ging hat sich durch die Umstellung von TDictionary auf eine CompareStr-StringList halbiert. Es dauert zwar immer noch zu lange, aber das ist schon mal ein Anfang. Gut, die Daten sind für das TDictionary etwas ungünstig, aber zum Glück gibt es noch die gute alte TStringList. Die Lösung wird wohl sein, die GUIDs in 2 Int64 zu konvertieren und dann eine "handgeschriebene" Dictionary Klasse zu schreiben, vor allem mit dem Hintergrund, dass die 10.000 Daten nur die Spieldaten sind (ob uns da nicht die GUIDs ausgehen :-) ) |
AW: RTL Performance D7 vs XE7
Ach mist, der blöde Vergleicher.
Die sind nicht so gut und optimieren das z.B. für Strings/Integer? Jetzt muss ich nochmal nachsehn, ob die for-in-schleife bei Arrays und Strings auch über die Enumeratoren läuft. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 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 by Thomas Breitkreuz