maettig.com

Thiemos Archiv

Ich habe eine C++-Frage. Warum werden die beiden getrennten Operationen *zeiger = wert; zeiger++; messbar schneller ausgeführt als die Kombination *(zeiger++) = wert;, die exakt das selbe tut?
setz doch mal im debugger einen haltepunkt, und lass dir den assembler-code anzeigen.
Holger
...was die offensichtliche Antwort ist, wenn man es nicht genau weiß und kein Experte in der Nähe ist. ;)

Zumal es kaum "messbar schneller" wäre, wenn das ganze nicht durch x-fache Iteration erst zu einem Problem werden würde. Sprich: Der Kontext ist auch wichtig. Was passiert in der Schleife, liegt ein Caching/Stack-Problem vor, usw.
tom
Der angezeigte Assembler-Code ist in beiden Fällen identisch. Es muss sich also um einen Messfehler handeln (z.B. durch den Profiler?). Und nein, natürlich ist dieses Fragment kein "Bottleneck", um das ich mir Gedanken machen müsste.
Thiemo
damit fallen die cache-misses eigentlich flach, weil genau der gleiche code ausgeführt wird?
Holger

Kommentare zu diesem Beitrag können per E-Mail an den Autor gesandt werden.

[ ← Zurück zur Übersicht ]

Impressum & Datenschutz