AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Stringoperationen :: Performancemessung am bsp ANSI->ASCII
Thema durchsuchen
Ansicht
Themen-Optionen

Stringoperationen :: Performancemessung am bsp ANSI->ASCII

Ein Thema von choose · begonnen am 5. Dez 2003 · letzter Beitrag vom 9. Dez 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von negaH
negaH

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

Re: Stringoperationen :: Performancemessung am bsp ANSI->

  Alt 8. Dez 2003, 19:14
Eines verstehe ich aber nicht ?!

  for iChar:= Length(Result) downto 1 do Warum nutzt du eine TopDown Schleife statt einer BottomUp ?

  for iChar:= 1 to Length(Result) do Normalerweise sollte vom Speicherzugriff/Cache die zweite Methode schneller sein.

Gruß hagen
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#12

Re: Stringoperationen :: Performancemessung am bsp ANSI->

  Alt 8. Dez 2003, 20:04
Fragt sich nur ob Delphi die Schleife nicht sowieso als downto-Schleife optimiert.
Also mal mit und ohne Optimierung probieren.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Stringoperationen :: Performancemessung am bsp ANSI->

  Alt 9. Dez 2003, 02:19
Zitat:
Fragt sich nur ob Delphi die Schleife nicht sowieso als downto-Schleife optimiert.
Also mal mit und ohne Optimierung probieren.
Nein, dies macht Delphi nicht. D.h. die Reihenfolge der effektiven Speicheradressen ergibt sich immer aus der Schleife, egal ob Delphi optimiert oder nicht. Denoch kann Delphi eine BottomUp Schleife in eine TopDown Schleife um-optimieren, wird dann aber beim indizierten Arrayzugriff dies so berücksichtigen das dieser wieder exakt den Vorgaben aus dem Source entspricht.

Gruß Hagen
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#14

Re: Stringoperationen :: Performancemessung am bsp ANSI->

  Alt 9. Dez 2003, 09:30
Zitat von Hagen:
[...] die Reihenfolge der effektiven Speicheradressen ergibt sich immer aus der Schleife, egal ob Delphi optimiert oder nicht
Das stimmt, Hagen. Lediglich für die Abbruchbedingung und den Debugger ist der Iterator relevant, weshalb dies beim debuggen mitunter recht merkwürdig aussieht.

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...
gruß, choose
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:17 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