Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#14

Re: Stringkonkatenation ist schneller als direktes Kopieren?

  Alt 19. Mär 2008, 20:46
Zitat von alzaimar:
@jbg: Wir argumentieren doch immer so, das bei einer Stringkonkatenation (hier) 1 Mio mal neuer Speicher angefordert und der String umkopiert werden muss, und das dauert und daher sollte man V2 nehmen.
Das ist auch so richtig. Nur gehen wir dabei nicht mehr mit der Zeit. Wenn FastMM4 im Spiel ist, werden String-Konkatenationen schon mal von Haus aus schneller, weil nicht mehr für jedes zusätzliche Zeichen neuer Speicher angefordert wird, sondern immer in größeren Blöcken. Das wird dann zwar mit mehr Speicherverbrauch bezahlt, aber bei den heutigen RAM Größen ist das vernachlässigbar.
Zum anderen kommen bei heutigen Systemen mehrere CPUs ins Spiel. Dort sind die CPU LOCKs (derer gleich drei Stück in LStrAsg enthalten sind) teurer, weil ja tatsächlich eine andere CPU auf den Speicher zugreifen könnte. Davon sind Hyperthreading Prozessoren ebenfalls betroffen.

Zitat:
Wenn man das dann mal manifestieren will (sozusagen als Demo fur Dummies), fällt man so richtig (aber so richtig!) auf die Plautze.
Compilermagic kann eben grausam sein.

Zitat:
Ehrlich gesagt bin ich etwas verwirrt.
Das bin ich zwar nicht, aber um das ganze Schneller zu machen, muss nun der ohnehin schon kompliziertere Code nochmals verkompliziert werden. Am Schluss blickt man dann gar nicht mehr durch, weil es nur noch so von "Compiler lass die verdammte Compilermagic hier weg" Anweisungen so wimmelt.
  Mit Zitat antworten Zitat