사기 시연회!
며칠 전 IE 9 베타 출시를 기념한 블로거 간담회가 있었다. 당시 간담회에서 IE 9는 빠른 걸로 소문난 크롬을 압도하며 많은 화제를 뿌렸다. 그런데 IE 9의 크롬 압도는 행사 진행진의 꼼수에 비롯된 일이었다. 마이크로소프트에서는 '몰랐다'고 하지만 과연 모르고 벌인 일인지에 대해서는 여전히 의문이다. IE 9의 크롬 압도는 사실이 아니라 '사기'다. IE 9는 하드웨어 가속을 켜고 크롬은 하드웨어 가속을 끈 상태에서 동시에 실행해서 벌어진 일에 불과하다. 마이크로소프트 측에서는 이일에 대한 사과를 약속했다
블로거 간담회? No 사기 시연회!
며칠 전 IE 9 베타 출시 블로거 간담회를 다녀왔다. 그리고 쓴 글이 IE9, 하드웨어 가속이 승부를 갈랐다!라는 글이다. 이 글과 동영상을 보면 알 수 있지만 IE 9의 자바스크립트 엔진은 크롬에 버금가며, 하드웨어 가속을 이용한 그래픽 성능은 크롬을 사실상 압도했다. 동영상을 보면 알 수 있지만 물고기가 1000마리일 때 IE 9는 30FPS가 나오지만 크롬은 3~8 FPS로 따라갈 수 없을 정도로 큰 속도 차이가 난다. 이 덕에 IE 9는 물고기가 상당히 빠르게 움직이지만 빠르다는 크롬은 거의 정체되어 있는 것처럼 보인다.
크롬도 지원하는 하드웨어 가속
물론 아직까지 이런 하드웨어 가속을 효과적으로 사용할 수 있는 웹 어플/사이트는 거의 없다. 그러나 HTML 5가 보편화되면 이런 하드웨어 가속도 브라우저 성능을 평가하는 중요한 항목이 될 것은 분명하다. 그리고 오늘 크롬 블로그를 통해 왜 크롬이 이런 속도가 나왔는지 알 수 있었다. 최근 크롬도 하드웨어 가속을 지원한다. 다만 옵션이 기본 옵션이 아니라 명령행 스위치로 추가해야 동작한다. 따라서 하드웨어 가속과 캔버스 성능을 정확하게 평가하려면 크롬은 다음과 같은 명령행 옵션을 추가해야 한다.
chrome.exe --enable-accelerated-2d-canvas
다음 그림은 크롬에 --enable-accelerated-2d-canvas
스위치를 사용할 때와 사용하지 않을 때 하드웨어 가속 성능을 잡은 것이다. 시험에 사용된 사이트는 IE 9 테스트 사이트(Fish Tank)이다. 또 시험에 사용한 크롬(Chrome)은 카나리 빌드 7.0.524.0판이다. 그림을 보면 알 수 있지만 물고기의 수를 1000마리로 늘려도 IE 9와 거의 비슷한 FPS가 나온다. IE가 안정적으로 30FPS가 나온반면 크롬은 22~30FPS로 물고기의 움직임에 따라 조금 편차가 있었다. 다만 크롬의 그래픽 가속 성능 역시 IE 9에 뒤지는 수준은 아니었다.
그림을 보면 알 수 있지만 크롬은 --enable-accelerated-2d-canvas
를 사용한 경우와 그렇지 않은 경우 속도의 차이가 상당히 컸다. 이 부분은 IE 9도 비슷하다. IE 9도 GPU 대신 소프트웨어 렌더링을 이용하면 비슷한 속도가 나온다.
사기에 가까운 비교 시연
즉, 지난 IE 9 베타 간담회에서는 크롬은 그래픽 가속을 끄고 IE 9는 그래픽 가속을 켠 뒤 비교 시험했다. 상황이 이런 상황이었기 때문에 IE 9가 빠른 속도로 유명한 크롬을 압도할 수 있었다. 따라서 이번에는 간담회와 정확히 반대 상황에서 같은 시험을 해볼까 한다. 즉, IE 9는 그래픽 가속을 끄고 크롬은 그래픽 가속을 켠 뒤 두 브라우저의 하드웨어 가속 성능을 비교하는 것이다.
그것이 알고 싶다에 출연한 뒤 제 출연분을 유튜브에 올렸습니다. 그런데 이 동영상을 SBSi에서 저작권 위반으로 신고, 유튜브 계정이 잘렸습니다. 이 탓에 유튜브에 올린 동영상 강좌 대부분이 사라졌습니다. 복구 가능한 동영상은 페이스북을 통해 복원하고 있습니다. 이 부분에 대한 자세한 이야기는 드라마 백동수에 대한 글의 남은 이야기를 보기 바랍니다.
IE 9(Off)/크롬(On)
그것이 알고 싶다에 출연한 뒤 제 출연분을 유튜브에 올렸습니다. 그런데 이 동영상을 SBSi에서 저작권 위반으로 신고, 유튜브 계정이 잘렸습니다. 이 탓에 유튜브에 올린 동영상 강좌 대부분이 사라졌습니다. 복구 가능한 동영상은 페이스북을 통해 복원하고 있습니다. 이 부분에 대한 자세한 이야기는 드라마 백동수에 대한 글의 남은 이야기를 보기 바랍니다.
IE 9(On)/크롬(Off)
처음 나오는 동영상은 오늘 한 비교 시험으로 IE 9의 그래픽 가속을 끄고, 크롬의 그래픽 가속을 켠 경우이다. 두번째 동영상은 어제 올린 동영상으로 IE 9의 그래픽 가속을 켜고, 크롬의 그래픽 가속을 끈 경우다. 두 개의 동영상을 보면 알 수 있지만 블로거 간담회에서 한 비교 실험과 정 반대의 결과가 나오는 것을 알 수 있다. 또 IE 9는 그래픽 가속을 끄면 물고기의 수가 20마리에 불과해도 50FPS 정도 밖에 나오지 않는다. 반면에 크롬은 이런 상황에서도 60FPS가 나왔다.
여기에 CPU 점유율은 올라가서 IE 9를 움직이기 힘들 정도로 컴퓨터가 버벅 거렸다. 다만 여기서 한 가지 궁금한 점이 생긴다. 먼저 간담회에서는 크롬과 비교 시험으로 크롬과의 압도적 성능차를 입증했다. 빠르기로 유명한 크롬을 압도했다. 이것만으로도 홍보 효과는 충분했을 것이라고 생각한다. 다만 마이크로소프트 관계자들은 이런 사실을 모르고 시연을 한 것인지 궁금해진다. 브라우저를 개발하며 다른 브라우저를 벤치마크했으니 이런 사실을 몰랐다고 보기도 힘들기 때문이다.
크로미엄 블로그에 이 옵션에 대한 설명이 올라온 날짜는 9월 14일이다. 따라서 알려고 하면 충분히 알 수 있는 시점이었다. 물론 관심이 없다면 몰랐을 수도 있다. 결국 IE 9는 하드웨어 가속을 켜고 시험하고, 크롬은 하드웨어 가속을 끄고 시험한 셈이다. 따라서 간담회의 성능 시험 자체가 불공정한 시험이었을 수 있다. 또 당일 마이크로소프트 발표자는 분명히 크롬도 하드웨어 가속을 지원한다는 것을 알고 있었다.
왜 동시에 비교해야 할까?
크롬도 하드웨어 가속을 지원하며, 속도 역시 IE 9에 못지않다는 트윗을 올리자 크롬 판번호와 크롬만 열어놓고 테스트하신 것은 아닌지를 묻는 트윗이 달렸다. 이 부분은 조금 의외였다. 일반적으로 성능을 시험하기 위해서는 실행중인 모든 프로세스를 끝내고 한 프로그램만 실행해서 성능을 측정해야 한다. 이렇게 하지 않으면 다른 프로세스에 영향을 받아 정확한 성능을 측정할 수 없기 때문이다.
그런데 '크롬만 실행한 것이 아니냐?'는 질문을 받으니 의외일 수밖에 없었다. 그래서 크롬 7과 IE 9를 동시에 실행해 봤다. 단 지난 블로그 간담회와는 달리 크롬을 먼저 실행하고 IE 9를 나중에 실행했다. 이렇게 하면 물고기의 수가 1000마리일 때 크롬은 28FPS에서 10FPS 정도로 느려진다. 반면 IE는 10FPS에서 25FPS로 속도가 올라간다. 그런데 이런 결과는 당연하다. 하나의 자원을 두 프로세스가 동시에 접근하려고 하면 당연히 경쟁이 발생한다.
그리고 경쟁에 이긴 프로세스가 자원을 점유한다. 즉, IE 9와 크롬 7을 모두 켜고 시험하면 IE 9가 GPU 자원을 점점 더 많이 차지하고 이 때문에 IE 9는 속도가 올라가지만 크롬은 속도가 떨어진다. 즉, 운영체제를 개발한 마이크로소프트이니 경쟁에 유리할 것은 자명하다. 그러나 이처럼 두 브라우저에서 동시에 띄어 GPU를 완전히 소모해야 하는 상황은 발생하지 않는다.
한 예로 IE 9와 크롬을 동시에 띄워 HTML 5로 만든 온라인 게임을 동시에 하는 상황에나 발생한다. 그런데 이런 일이 발생할 수 있을까? 결국 "두 브라우저를 동시에 띄어 성능을 측정해야 한다"는 주장은 우리가 운영체제를 개발해서 같은 상황이라면 우리가 경쟁에 더 유리하다는 주장 밖에 되지 않는다. 즉, 하드웨어 가속 성능을 측정하는 것과는 무관하다는 뜻이다. 아울러 앞에서 설명했지만 벤치마크를 할 때는 절대 이런 방법을 사용하지 않는다.