Compiler hängt seltsamen Code vor meine funktion. Bedeutung???
-
Hallo, liebe Leute!
Da die Performance meines simplen Programms ziemlich Bescheiden ist, habe ich mir mal mit einem Profiler angeschaut, um zu sehen, wo es denn hängt. Dabei hab ich rausgefunden, dass er bei jeder Funktion (in meinen ungeschulten Augen) ziemlich unnützen Kram vor die Funktionen stellt, die etwa 50% der Rechenzeit der Funktion in Anspruch nimmt. Es sieht so aus:Address Line Trace Source Code 0xbfe6420 push ebp 55 0xbfe6421 mov ebp,esp 8B EC 0xbfe6423 sub esp,000000cch 81 EC CC 0xbfe6429 push ebx 53 0xbfe642a push esi 56 0xbfe642b push edi 57 0xbfe642c push ecx 51 0xbfe642d lea edi,[ebp-000000cch] 8D BD 34 0xbfe6433 mov ecx,00000033h B9 33 00 0xbfe6438 mov eax,cccccccch B8 CC CC 0xbfe643d rep stosd es:[edi] F3 AB 0xbfe643f pop ecx 59 0xbfe6440 mov [ebp-08h],ecx 89 4D F8
Der "rep stosd es: [edi]" braucht die meiste Zeit.
So weit ich weiss, macht der doch nur einen memset([edi],eax,ecx) und 204 Bytes mit cccccccch gefüllt zu kopieren lasse ich nur ungern meine Performance kaputt machen. Scheinbar gibt es aber auch andere Leute, bei deren Funktionen dieser Code vorangestellt wird:
[url]
http://forums.devshed.com/c-programming-42/convert-c-to-assembly-language-183227.html
[/url]
Weiß jemand, was der Kram soll?
Vielen Dank und viele Grüße
Sören
-
debug-builds zu profilen ist sinnlos.
-
Du hast ja so recht. Muss einem als noob nur jemand stecken
Danke
Sören