닷넷과 네이티브 코드의 속도 논쟁을 보고 한가지 궁금한 게 생겼는데요.
가끔 C++ builder나 델파이가 구닥다리 컴파일러를 개선하지 못하고 10년 넘게 사용해와서 VC++에 비해 엄청 느리다..
라는 말을 보거나 듣거나 합니다.
그렇다면, C++ builder나 델파이 컴파일러 (32비트) 로 만든 코드와, 태생적으로 좀 느릴 여지가 있는 C#이나
Visual Basic 같은 닷넷 기반 언어를 비교하면 어느쪽이 빠를까요?
핸디캡은 양쪽다 있는것 같은데요. 닷넷은 최신버전에 돈 많은 회사거라 튜닝도 잘 되어 있겠지만
그렇다고 과연 더 빠를까요?
뭐, 갑자기 궁금해서 적어봤습니다. ^^
|
이건 제트기와 자동차의 관계에 비교할 수 있습니다. 부가티 베이론은 최고속도가 430km가 넘는, 공식적으로 세계에서 가장 빠른 자동차죠. 자동차 기술의 총아라고 할 수 있는 최첨단 슈퍼카죠. 이 부가티 베이론에 제트기로는, 두어 세대가 F-16이나, 심지어 베트남전의 주력이자 이미 퇴역 절차가 진행중인 구닥다리 전투기 F-4 팬텀을 비교하면 어떨까요. 당연히 비교 대상이 안됩니다.
물론 부가티 베이론과 F4 팬텀이 대결할 때 드래그의 조건에 따라서는 베이론이 더 빠른 조건을 만들어낼 수도 있습니다. 가장 간단한 방법은 장거리가 아닌 아주 단거리에다 조종사 탑승 시간까지 모두 포함시켜버리면 베이론이 더 빠른 결과가 얼마든 나올 수 있죠. 단적으로 '수도권-서울 출퇴근 시간' 이런 조건을 제시해버리면 베이론이 F4보다 훨씬 빠를 겁니다.
물론 이런 비교가 의미가 없지는 않습니다. 출퇴근 수단으로서 F5의 가치를 따져야 한다면 당연히 의미 있는 대결이겠죠. 하지만 본질적으로 보면, 구글의 창업자들처럼 개인적으로 전투기를 보유한 재벌이라고 해도 전투기를 단거리 출퇴근 목적으로 타고 다니지는 않겠지요. 네이티브보다 느린 닷넷이라도 성능이 중요하지 않을 수 없기 때문에 끊임없이 성능을 개선시켜온 것이지만, 제트기와 자동차의 비교처럼 본질적으로 급이 다른 문제입니다.
국지적인 상황을 제외한다면, 가상환경과 네이티브의 성능 대결이라는 명제는 본질적으로는 아무런 의미도 없는 것입니다. 예를 들어 가상환경의 성능을 비약적으로 끌어올릴 수 있는 신기술이 개발된다면, 그것을 네이티브에 적용하면 네이티브도 가상환경이 따라온 것만큼 혹은 그 이상으로 극적으로 빨라질 것입니다.
만약 닷넷이 어떻게든 네이티브의 성능을 능가할 수 있다면 마이크로소프트부터 윈도우를 비롯한 핵심 제품들의 코어를 닷넷으로 만들었겠지요. 하지만 '애플리케이션' 레이어에 해당하는 부분들을 제외하고 윈도우 OS의 코어 부분들은 여전히 모두 네이티브로 만들어져 있습니다. 몇년 전에 닷넷의 성능에 대해 닷넷 예찬론자들의 기대감이 극에 달했을 때, 롱혼, 그러니까 윈도우 비스타가 코어부터 닷넷으로 다 만들어진다는 괴소문이 퍼졌었던 거 기억하시는지요. 하지만 비스타가 출시된 후 윈도우 7, 8이 나오도록 윈도우 OS 영역은 여전히 순수 네이티브로 만들어지고 있습니다. 그 시기쯤부터 닷넷의 성능에 대한 과도한 기대가 한풀 꺾이기 시작했던 듯 싶습니다.