윈98 / 윈2000 / 윈XP 도 다시 컴파일하면 빨라질까요...
요즘 gentoo 리눅스를 잡고 삽질하고 있습니다. 모든 패키지를 네트워크에서 소스파일을 다운로드 받아서 컴파일해서 설치하는 배포본이더군요. 살인적인 인스톨 시간 때문에 '엽기 리눅스' 라고 말하는 사람도 있네요 ^^;;
gentoo 리눅스는 이러한 문제에도 불구하고 평은 좋더군요. 이유는 가볍고 빠르고, 최적화되어있기 때문이랍니다. 모든 프로그램과 라이브러리 등을 자신의 CPU 에 맞는 코드로 컴파일하기 때문이라는데... 맨드레이크와 gentoo 를 비교하면, 대부분의 경우 조금씩 gentoo 쪽이 빠르고, 일부 소프트에서는 최고 2배까지도 빠르더군요.
현재 대부분의 리눅스 배포본은 상이한 CPU 에서 호환성 확보를 위해서 대부분 32bit 최하급인 i386 코드를 기본으로 컴파일된다고 하네요. gentoo 는 CPU에 따라 각각 i486, i586, i686, 펜티엄3, 펜티엄4, 애슬론XP 전용 코드로 따로 컴파일 할 수 있더군요. 그래서 빠른 거라는데, 인스톨 시간이 엽기라서... 펜티엄1GHz 에서 기본 시스템 컴파일까지 5∼6시간, gnome 까지 11시간 정도 걸린 것 같네요 ㅡ_ㅡ;;
(다시 깔 생각을 하면 눈앞이 캄캄 ㅠ.ㅠ 기본 시스템에서 gnome 까지 컴파일하는데, 펜티엄4 2.53GHz 에서 4∼5시간, 애슬론XP 2500+ 에서 4시간 정도랍니다)
호환성을 중시하는 x86 머신에서 M$ 계열 OS 들이 i686 이나 그 이상 코드로 컴파일되어 있지는 않을 것 같고... 만일 윈98 / 윈2000 / 윈XP 도 소스가 공개되어있고, 이를 자신의 머신에서 (시간이 엄청나게 걸리겠지만) 재컴파일한다면 과연 성능의 향상이 있을까요?
특히 펜티엄4 같은 경우는 i386 코드로 컴파일 된 소프트에서는 오히려 성능저하가 일어난다고 하니... 실제 클럭의 70% 정도의 성능 밖에 안 나온다고 들었습니다. i386 코드 소프트는 동일 클럭에서 펜3 쪽이 훨 빠르다고...
프로그래밍을 하지않다보니, 코드에 따라 속도차이가 그렇게 심하게 나는 것인지 궁금하네요. i386 에서부터 펜티엄4 코드에 이르기까지, 코드별로 속도차이를 경험해본 분이 계시다면 간단해도 좋으니 답변 부탁드립니다.
- i386
- i486
- i586 (펜티엄1 씨리즈)
- i686 (펜티엄 프로, 펜티엄2)
- 펜티엄3 (펜티엄3, 코퍼마인, 튜알라틴)
- 펜티엄4
- 애슬론XP (모든 종류의 애슬론)
참고로 gentoo 에서 지원하는 코드별 컴파일 구분입니다. i686 이면 펜티엄 프로 이상은 다 효과가 있다고 생각했는데, 그나마도 CPU 별로 또 속도차이가 나는 모양입니다. i686 말고 펜티엄3, 4, 애슬론XP 용 옵션이 전부 따로 있더군요 ㅡ_ㅡ
Re: 윈98 / 윈2000 / 윈XP 도 다시 컴파일하면 빨라질까요...
윈도우 컴파일 시의 성능을 따지기 이전에, '최적화 컴파일' 했을 때의 성능차란 것에 회의를 품고 있습니다. 두 배까지도 빠르다고 하셨는데, 예 끽해야 두 배 아니겠습니까? 빠르다고 느끼는 것은 플라시보 효과가 크다고 생각합니다.
"no error was found with his codes"
Re: 윈98 / 윈2000 / 윈XP 도 다시 컴파일하면 빨라질까요...
SSE나 SSE2, 3DNow! 등 추가 명령 세트의 지원 차이일겁니다. (MMX도 구분이 있었던듯도 싶군요)
속도 차이를 느끼는건 사용하는 프로그램이 어떤 연산을 하는지에 관련이 있을 듯 싶군요.
FreeBSD를 쓰다보니 make world가 당연하게 느껴져서 보통 상태랑 얼마나 차이가 나는지는 잘 모르겠습니다. :)
[quote]윈도우 컴파일 시의 성능을 따지기 이전에, '최적화 컴파일'
플라시보 효과는 아닌 것 같군요. gentoo 홈페이지에 가보면, gentoo 와 맨드레이크를 비교한 자료가 나와 있는데, 동일 하드웨어에서 각각의 프로그램 실행시간을 비교했습니다. 정확한 초단위로 나와 있습니다. 대부분의 gentoo 유저들도 조금씩 빨라진 것을 느끼고 있다는 것이 공통된 의견이구요.
'끽해야 두배' 라는 표현은 좀 그렇군요 ㅡ_ㅡ;; CPU 업그레이드를 해도 두배 성능 향상을 느끼기 힘듭니다. 최적코드 컴파일로 어느 정도의 성능향상을 얻을 수 있다면, 최적 컴파일을 논할 가치는 있다고 생각합니다. 문제는 M$ 제품의 최적 재 컴파일은 불가능하기 때문에 그림의 떡이라는 것이겠지요. 그래서 얼마나 빨리질까 하는 궁금증이 가시질 않는군요.
SSE, SSE2, 3DNOW! 명령어 셋 지원차이는 아닌 것 같던데요. gcc 컴파일 옵션에서
<i686>
CFLAGS="-O3 -march=i686 -funroll-loops -pipe"
<펜티엄3>
CFLAGS="-O3 -march=pentium3 -fprefetch-loop-arrays -funroll-loops -pipe"
이렇게 다릅니다. ' -fprefetch-loop-arrays ' 이란 옵션이 멀티미디어 명령셋 같아 보이지는 않네요 ^^;; 프로그래밍에는 까막눈이라서 잘 모릅니다만... prefetch 라면 미리 불러온다는 의미니까 예측 분기랑 상관된 것이 아닐까 하는 생각도 들고요.
댓글 달기