Entwickler-Ecke
Algorithmen, Optimierung und Assembler - if-then-else ODER wertberechnung
ichfalk - Fr 21.01.05 16:23
Titel: if-then-else ODER wertberechnung
Hallo!
Was ist schneller?
Delphi-Quelltext
1: 2: 3:
| if (schnitt = 1) then genauigkeit := 2; else genauigkeit := 0; |
ODER
Delphi-Quelltext
1:
| genauigkeit := 2 * schnitt; |
(schnitt kann nur 0 oder 1 sein...)
Falk.
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt.
HolgerB - Fr 21.01.05 16:34
Hallo,
ich würde es so probieren:
Delphi-Quelltext
1:
| Genauikeit := shl(schnitt); |
Meines Wissens nach sind Bittverschiebungen eine der Schnellsten Rechenoperationen.
shl bewirkt *2
shr bewirkt div 2
Gruß
Holger
I.MacLeod - Fr 21.01.05 22:31
Die korrekte Syntax dazu ist:
Delphi-Quelltext
1:
| genauigkeit := schnitt shl 1; |
Falls schnitt auch 2435 sein kann könntest du mal das hier versuchen:
Delphi-Quelltext
1:
| genauigkeit := byte(schnitt=1) shl 1; |
Aber keine Garantie auf irgendeinen Geschwindigkeitsvorteil ;-)
IIRC optimiert Delphi *2^n aber auch automatisch mit shl.
uall@ogc - Fr 21.01.05 23:00
also ich habs mal getestet
beide lokal:
aus genauigkeit := 2*schnitt
macht delphi nen
Delphi-Quelltext
1: 2:
| mov ebx, eax add ebx, eax |
das sehr schnell
aus genauigkeit := schnitt shl 1 macht delphi das selbe (also genau gleich schnell)
aus der if abfrage macht delphi was längeres (nicht schnell)
wenn man globale variablen benutzt (delphi greift dan auf den speicher zu und nimmt nicht die variablen als register)
ist:
genauigkeit := 2*schnitt bzw. genauigkeit shl 1 eigentlich genau so schnell wie
Delphi-Quelltext
1: 2: 3: 4: 5:
| asm mov eax, [schnitt] shl eax, 1 mov [genauigkeit], eax end; |
was etwas das selbe ist
also die if abfrage ist langsamer :P
Moderiert von
Christian S.: Delphi- bzw. Code-Tags korrigiert
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!