| [ 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명령어의 연산속도에 관계없이 컴파일러와 옵티마이즈 옵션에 따라 얼마든지 이상한 결과가 나올 수 있습니다. |