게임강의

비베 6.0으로 코딩한 프로그램이 느릴 수 밖에 없는 이유

본문


간단한 언어적 구문부터 대부분 msvbvm60.dll 내의 함수를 호출해서 처리하는 구조로 되어 있는데,



 



함수 호출 오버헤드와, Main EXE와 msvbvm60.dll 모듈을 왔다갔다하는 과정에서 코드 캐시 메모리의 붕괴.



 



Main EXE의 주소는 보통 0x400000이고 msvbvm60.dll의 주소는 그보다 수천만 바이트 이상 차이나기 때문에



 



캐시 붕괴는 불가피한 현상입니다.



 



또, 비주얼 베이직 6.0은 COM(Component Object Model)이라는 낡은 기술에 종속적이죠.



 



COM은 프로그램 개발을 간편하게 하고 확장성이 쉽지만, 언어 레벨에서부터 COM을 자체 지원하면서



 



이에 대한 오버헤드는 상당합니다. 가령 VB 6.0에서 배열을 선언하면 무조건 COM의 배열 형식인 SAFEARRAY 형태로



 



만들어지는데 이 SAFEARRAY라는 구조체를 액세스해서 배열 정보를 입력 / 인출하는 과정에서 오버헤드가 또 증가합니다.



 



반면 C/C++ 언어는 이런 단점들이 없기 때문에, 프로세서의 파이프라인에도 잘 녹아들어가



 



비주얼 베이직으로 짠 프로그램에 비해 최소 수십배는 빠릅니다.



 



비록 현대의 프로세서들의 성능이 상향 평준화되어 있다고 해도, 같은 시간에 똑같은 동작을 수십번 반복할 수 있다는



 



성능 차는 무시할 수 없기 때문에, 고성능 프로그램의 개발은 무조건 C/C++과 같은 저급 언어가 진리입니다.



 


댓글목록 0

등록된 댓글이 없습니다.

최근글


새댓글


  • 등록자 벼배릅 등록일 04.14
알림 0