2와 오른쪽으로 이동하는 성능 분석

964 단어
나는 다음과 같은 세 줄 코드를 가지고 있다.
	
	int a = 8;
	int ret = a/2;
	ret = a >> 1;

이제 위와 같은 두 가지 성능 나눗셈 2에 대해 살펴보겠습니다.
 
	
int a = 8;
013B143E  mov         dword ptr [a],8			\\  8     a
	int ret = a/2;
013B1445  mov         eax,dword ptr [a]			\\  a     eax
013B1448  cdq									\\      4  ( EAX          EDX   )
013B1449  sub         eax,edx					\\  eax  edx,      eax
013B144B  sar         eax,1						\\  eax      
013B144D  mov         dword ptr [ret],eax		\\  eax     ret   
	ret = a >> 1;
013B1450  mov         eax,dword ptr [a]			\\  a     eax
013B1453  sar         eax,1						\\  eax      
013B1455  mov         dword ptr [ret],eax		\\  eax     ret   

결론은 위치 이동을 통해 더욱 좋은 효율을 얻을 수 있다는 것이 매우 명백하다.
또한 @egmkang에 감사드립니다. a가 마이너스일 때 상기 두 가지 방식이 다른 결과를 얻을 수 있다는 것을 알게 되었습니다.
만약 a==-3이라면 a/2==–2;하지만 a>>1은 -1이다.
전재 대상:https://www.cnblogs.com/quark/archive/2011/11/30/2268807.html

좋은 웹페이지 즐겨찾기