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


Anmelden zum Antworten