![]() |
Re: Stringoperationen :: Performancemessung am bsp ANSI->
Eines verstehe ich aber nicht ?!
Delphi-Quellcode:
Warum nutzt du eine TopDown Schleife statt einer BottomUp ?
for iChar:= Length(Result) downto 1 do
Delphi-Quellcode:
Normalerweise sollte vom Speicherzugriff/Cache die zweite Methode schneller sein.
for iChar:= 1 to Length(Result) do
Gruß hagen |
Re: Stringoperationen :: Performancemessung am bsp ANSI->
Fragt sich nur ob Delphi die Schleife nicht sowieso als downto-Schleife optimiert.
Also mal mit und ohne Optimierung probieren. |
Re: Stringoperationen :: Performancemessung am bsp ANSI->
Zitat:
Gruß Hagen |
Re: Stringoperationen :: Performancemessung am bsp ANSI->
Zitat:
Ich könnte eine Bottom-Up-Schleife gerne einmal ausprobieren, und überprüfen, ob das Prefetching des Cache tatsächlich anschlägt, bin aber darüber hinaus überzeugt davon, dass eine ASM-Variante merkbar performanter gestaltet werden kann, wenn man davon ausgeht, dass Delphi-Strings idR an DWord-Grenzen ausgerichtet sind. In diesem Fall könnte man, den ganzzahligen vierten Teil der Länge in einer Schleife bearbeiten, bei der nur 1Dword+4Bytes (+4 Bytes schreiben) statt 4Bytes+4Bytes (+4 Bytes schreibend) lesende Speicherzugriffe notwendig sind, um vier Zeichen zu verarbeiten. Außerdem wäre eine Tabelle denkbar, bei der jeweils ein Tupel von Zeichen abgelegt wird, um auch hier effizienter zu arbeiten (1DWord+2Words lesend +2Words schreibend). Vielleicht möchte jemand von Euch, der bereits mit Delphi-Strings gearbeitet hat, so eine Lösung umsetzen? Ich persönlich scheitere am Aufruf von _LStrLen bzw beim Alloziieren eines Strings, so dass ich die Lösung nur für PChars umsetzen könnte, und ein Delphi-Wrapper notwendig wäre... :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 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