ich habe hier eine Funktion, die mein programm irgendwie bremst.
Wenn ich sie testweise abschalte, dann bin ich 20-30 prozent schneller, und das in einem komplexen Verarbeiten von noch viel mehr Funktionen und proceduren.
kann man das in
ASM vielleicht schneller gestalten oder lässt sich da nicht mehr soviel rausholen ?
Habe leider keine Ahnung von Assembler. Deshalb wollte ich Euch mal um Rat fragen.
Vielen Dank !
Delphi-Quellcode:
function SmallToDouble(CodZahl : Integer): Double;
var Scale : Integer;
begin
// Entschlüsseln !!
// Maske := 3; // 0000 0000 0000 0000 0000 0000 0000 0011
case ( (CodZahl shr 29) and 3) of
0 : Scale := 100;
1 : Scale := 10000;
2 : Scale := 1000000;
else
Scale := 1;
end;
// löschen der Bits
// MaskePositiv := $9FFFFFFF; // 1001 1111 1111 1111 1111 1111 1111 1111
// MaskeNegativ := $60000000; // 0110 0000 0000 0000 0000 0000 0000 0000
if CodZahl >= 0
then CodZahl := CodZahl and $9FFFFFFF // Bits müssen Null sein
else CodZahl := CodZahl or $60000000; // Bits müssen Eins sein
Result := CodZahl / Scale;
end;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.