[펌] O2 최적화보다 O1 최적화가 빠르다?
Tip & Tech / 2011. 9. 14. 17:35
Debugging Applications For Microsoft Windows 책에 보면 O1최적화 (크기 최소화)가 O2최적화(속도 최대화)보다 더 빠르다고 나와있다..
정말????
책에 보면 대략 실행파일의 이미지 크기가 작으면 page fault를 더 적게 일으키므로 더 빠르다라고 나와있다..
음.. 맞는말이다.. page fault가 일어날 경우에는 OS가 프로그램 실행에 필요한 데이터를 page file에서 실제 메모리에 load하기 위해서 엄청난 오버헤드가 발생한다..
그렇지만 고작 몇백킬로 차이밖에 안나는 것이 얼마나 눈에 띄게 속도 차이가 날까? 라는 의문이 마구마구 들었다..
그래서 테스트를 해봤다..
우선 테스트 프로그램을 만들어야하는데.. 대략 만들기는 귀찮고 해서 GUI를 이용하기로 했다.. GUITester에서 상단에 프레임률을 표시하기 때문에 이를 확인해보면 된다.
그래서 우선 프로젝트 세팅에서 아래와 같이 O2 최적화로 세팅을 했다.
그리고 컴파일.................................................
그리고나서 바이너리의 크기를 확인했다.
대략 1메가 정도 한다..
그럼 이제 실행을 해보자..
음.. 약 262프레임정도 나온다..
그럼 이제 O1로 컴파일을 해보자... 우선 프로젝트 세팅을 하고..
그리고 컴파일.............................
그리고나서 바이너리 크기 확인
약간 줄었다.. 70kb정도 ㄱ- 이정도로 정말 속도 차이가 날까???
그리고 실행...
엇!!!!! 이게 무슨일인가.. 미약하지만 정말 O2보다 프레임률이 올라갔다...
혹시나 하여 두세번 반복해서 재컴파일을 하여 비교를 해봤지만 확실히 차이가 보였다..
그렇지만 내가 생각하기에 page fault때문에 성능 차이가 나는것 보다는 바이너리의 크기가 작아지면서 CPU의 명령어 캐시히트율이 올라가서가 아닌가 하는 생각이 든다..
아마 항상 O1이 O2보다 빠르진 않을거라 본다.. 실제로 어떤게 더 빠른지는 테스트를 통하여 최적의 최적화 옵션을 선택해야 할 것이다.
반응형
'Tip & Tech' 카테고리의 다른 글
putty에서 EUC-KR 설정인 Linux 서버 접속하기 (0) | 2012.01.10 |
---|---|
[펌] 윈7 단축키 대박 (0) | 2011.11.26 |
.dmp 파일 남기기 (0) | 2011.09.11 |
[펌] Google C++ Style Guide (구글 C++ 엔지니어들의 코딩 스타일) (0) | 2011.08.22 |
메모리릭 찾기 (0) | 2011.08.20 |