CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): zzapuno (정내훈)
날 짜 (Date): 2003년 4월 24일 목요일 오후 10시 43분 49초
제 목(Title): Re: 계산 코드 옵티마이즈..


궁금해서 시험해봤는데요. gcc linux에서 옵티마이즈 없이 컴파일했습니다.
시스템은 XEON 1.8GHz 듀얼인데 사실상 두CPU다 놀고있습니다.
 
 
double 곱셈결과 --
real    2m25.839s
user    2m25.830s
sys     0m0.000s
 
int 곱셈결과 --
real    0m5.082s
user    0m5.080s
sys     0m0.000s          

-----------------------------

-S옵션으로 컴파일한 후 어셈블리화일을 비교해 보시기 바랍니다.
VC7.0에서 컴파일해보니 tmp*=tmp가
fld qword ptr[ebp-0ch]
fmul qword ptr[ebp-0ch]
fstp qword ptr[ebp-0ch]

로 컴파일되는군요.
INT인 경우에는
mov eax,edi
imul eax,edi
mov edi,eax
로 컴파일됩니다.

메모리참조 때문에 fmul이 imul보다 빨라도 INT가 더 빠르게 나오게 되는군요.
CPU명령어의 연산속도에 관계없이 컴파일러와 옵티마이즈 옵션에 따라 
얼마든지 이상한 결과가 나올 수 있습니다.



[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.