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

김국진이 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 22245
118 C 문법을 위반하는 경우가 생긴건지도 모르겠네요...뭐가 이러지?.. [6] 김영일 2010.12.06 7738
117 모듈오류가 나는데 이유가 뭔지 안잡히네요.. [5] 김영일 2010.11.30 14557
116 아직 끼우지 못한 단추가 남았습니다. [6] 박한범 2010.11.30 8218
115 HVM 실험 좀 부탁합니다. [6] 백창우 2010.11.17 6454
114 리눅스에서 armulator 구동하는 방법 김성오 2010.11.08 7660
113 arm에서 mmu 설정 문제... [1] 유대철 2010.11.03 9740
112 멀티프로세서+멀티코어에 대해 궁금한게 있습니다. [14] 박한범 2010.11.01 8789
111 멀티프로세서+멀티코어에 대해 궁금한게 있습니다!? [8] 박한범 2010.10.30 7672
110 리눅스 인터럽트 금지 해제 관련 [9] 홍문화 2010.09.30 11634
109 gcc 디버깅방법 [1] 피승현 2010.09.27 8820
» 컴파일러 최적화 부분에서... [2] 김국진이 2010.09.04 8666
107 특정 라이브러리만 정적링킹하도록... [3] 김경태 2010.08.17 9812
106 8차 스터디 인원 모집에 대해 문의 드립니다. [1] 신창호 2010.08.17 4837
105 address_space 구조체에 대한 질문 [9] 송원준 2010.07.27 9948
104 S3c2440의 USB host 기능 실현에 대한 질문입니다. 이죽송 2010.07.16 9451
103 커널 스터디에 관해 질문드립니다. 김진수 2010.07.16 5119
102 pgd_offset_K() 커널함수에 대한 질문입니다. [2] 백철민 2010.06.23 9942
101 커널 스터디에 참여하고 싶은데요.. [1] 박영현 2010.06.22 5516
100 dd명령어 써서 디스크 카피 할 시 신재욱 2010.06.16 7362
99 linux에서partition분할하지 않고 포멧한 경우 신재욱 2010.06.16 6379
XE Login