Wie witzig ... Hab heute erst genau die gleiche Funktion in der DSCal-Kompo optimiert und dabei festgestellt, dass sich der TCanvas.TextWidth-Aufruf mit folgendem SRC auf das Doppelte beschleunigen lässt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| Function ITextWidth(C: TCanvas; Var Text: String): Integer; Var P: tagSize; CanvH: THandle; Begin CanvH := Canvas.Handle; asm LEA EAX, [P] PUSH EAX MOV EAX, DWORD PTR [Text] MOV EAX, DWORD PTR [EAX] PUSH DWORD PTR [EAX-$00000004] PUSH EAX PUSH DWORD PTR [CanvH] CALL GetTextExtentPoint32 MOV EAX, DWORD PTR [P.tagSIZE.cx] end; End; |
@
uall@ogc: Kannst Du mal gucken, ob Du TCanvas.GetHandle irgendwie per ASM gecallt bekommst?
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.