컴파일러 최적화 부분에서...

김국진이 2010.09.04 23:44 조회 수 : 8666

Release Mode로 컴파일!

 

#inlcude<iostream>

 

int main(void)
{

sum = 0;

 

for ( int i=0; i<10; i++ )

          sum += i;

 

return sum;

}

=> 컴파일 해보니, return 45라고 컴파일러가 최적화를 잘 해주었습니다. ^^ ( 리버스 엔지니어링으로 분석 결과.)

 

그런데,!!!!!!!!!!!!!

 

#inlcude<iostream>

 

int main(void)
{

sum = 0;

 

for ( int i=0; i<100; i++ )

          sum += i;

 

return sum;

}

=> 컴파일 해보니...  for문을 100번 돌아서 return 해줍니다... 어찌된거죠?!?!

 

나름대로 컴파일러 최적화 옵션을 이리저리 만져보았는데도, return 4950(0~99 합)로 바뀌지 않았습니다.

 

저 100이라는 숫자를 줄이면서보니, for문을 10번 돌 때만 첫번째 경우처럼 상수로 바꿔주었습니다.

(for int i=10; i<20; i++ )

=> return 145로 최적화 되어 나오네요. ^^

 

왜 for문을 최대 10번까지 돌 때에만 최적화가 되는지 궁금합니다.

컴파일러 분석을 통해 알고 계시는분이 있을거 같습니다.

정말 궁금합니다. 제가 컴파일러 제작자였다면 for문 100번이라도 최적화를 했을텐데 말이죠 ㅎㅎ.

 

Microsoft Visual Studio 2005
버전 8.0.50727.42  (RTM.050727-4200)
Microsoft .NET Framework
버전  2.0.50727 서비스 팩 2

 

Microsoft Visual C++ 2005   77996-009-0000007-41601
Microsoft Visual C++ 2005

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22270
418 커널 스터디에 관해서;;. 질문드립니다. [5] 한상은 2007.07.11 8693
» 컴파일러 최적화 부분에서... [2] 김국진이 2010.09.04 8666
416 리눅스에서 FIQ 사용 하는법 아시나요? 홍문화 2010.06.11 8656
415 signal에 대한 질문입니다 많은 조언 부탁드립니다 ㅠㅠ [19] 송창인 2011.04.06 8598
414 arm 보드 구매에 대한 조언 부탁 드립니다. [1] 김성준 2007.10.27 8581
413 HP-UX 링크 옵션 질문입니다. [6] 조운현 2011.04.06 8575
412 sk_buff 을 이용한 UDP 패킷 전송 질문있습니다ㅠㅠ [1] 김숙현 2012.10.05 8556
411 리눅스의 스케쥴링에 따른 priority는 어떻게 설정해주나요? [5] 심우진 2011.04.12 8539
410 스터디 참여에 관해서 질문이있습니다. [1] 최대진 2007.09.12 8530
409 defconfig,Kconfig... ?? [1] 서보일 2012.07.26 8510
408 사운드 드라이버 관련 질문입니다. [2] 조현호 2013.03.25 8479
407 trap_init() 설명 부탁드려요~ [3] 이창만 2008.11.18 8433
406 라이브러리 프로파일링 [2] 김경태 2011.01.12 8431
405 리눅스 커널패닉 덤프를 분석하려면 필요한 선수지식 [4] 아척 2013.07.31 8427
404 LINUX ARM switch_mm 관련해서 문의 드립니다. [20] 송원식 2011.08.12 8381
403 C 개발 표준 [2] 조운현 2011.06.01 8373
402 커널 모듈에서 특정 사용자 프로세스의 메모리 공간을 접근하고 싶습니다. [3] 남현우 2009.04.01 8326
401 qemu에서 커널을 debugging 하고 싶습니다. [4] 하이디제이 2012.05.07 8287
400 모집 공고 보고 참석 메일 보냈는데요. [1] 문경원 2007.10.17 8273
399 page table 질문 [3] 김광식 2012.08.21 8267
XE Login