Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
Delphi 11 Alexandria
|
AW: schnelle getPixel Funktion
16. Aug 2011, 11:22
Der zeitliche Overhead liegt einerseits am Funktionsaufruf, vor allem aber an der Berechnung der Adresse des Pixelwertes...
Schau dir dein "einfaches" getpixel mal im Assemblercode an...
Code:
XYZ.pas.26: begin
004AB71C 55 push ebp
004AB71D 8BEC mov ebp,esp
004AB71F 83C4F0 add esp,-$10
004AB722 894DF4 mov [ebp-$0c],ecx
004AB725 8955F8 mov [ebp-$08],edx
004AB728 8945FC mov [ebp-$04],eax
XYZ.pas.27: result := bits[y][3*x + 2];
004AB72B 8B45FC mov eax,[ebp-$04]
004AB72E 8B8088030000 mov eax,[eax+$00000388]
004AB734 8B55F4 mov edx,[ebp-$0c]
004AB737 8B0490 mov eax,[eax+edx*4]
004AB73A 8B55F8 mov edx,[ebp-$08]
004AB73D 8D1452 lea edx,[edx+edx*2]
004AB740 8A441002 mov al,[eax+edx+$02]
004AB744 8845F3 mov [ebp-$0d],al
XYZ.pas.28: end;
004AB747 8A45F3 mov al,[ebp-$0d]
004AB74A 8BE5 mov esp,ebp
004AB74C 5D pop ebp
004AB74D C3 ret
Sebastian Jänicke Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
Geändert von jaenicke (16. Aug 2011 um 11:24 Uhr)
|