Friday, February 10, 2012
Retabbed
Login | Register
아티클
  Search
닷넷(.NET)의 속도
닷넷(.NET)의 속도

닷넷은 컴파일을 해도 기계어 바이너리 실행파일을 만들지 않는다. 대신 중간언어로 표현되는 가상 어셈블리어를 만들고 이를 런타임에 실행하는 방법을 사용한다. 형태적으로 보면 인터프리팅과 컴파일링의 중간쯤에 해당한다. 그러다 보니 당연히 기계어로 직접 컴파일하는 기존의 방법에 비해서 속도가 떨어지게 된다. 그렇다면 도데체 얼마나 떨어지게 되는 것일까?

모든 프로그램에 대하여 일반적으로 얼마나 속도저하가 있다고 말하기는 다소 어려운 부분이있다. 그래서 속도게 가장 민감한 3D게임의 예가가 있다. Vertigo Software는 닷넷의 속도 비교와 기존 C코드를 닷넷으로 포팅하는 예를 QuakeII를 통해서 보여주었다.

이 프로젝트에서는 현재 GPL로 되어 있는 QuakeII 소스를 네이티브 C++로 포팅하고 다시 이것을 매니지드 C++(C++.NET)으로 포팅하였다. 기존 QuakeII소스는 C 코드인데 이것을 C++로 포팅하는데 4일, 다시 이것을 C++.NET으로 포팅하는 데 하루, 그위에 C++.NET으로 새로운 기능(레이더)를 추가하는데 이틀이 걸렸다고 한다.

결론적으로 QuakeII를 닷넷으로 포팅한 결과 네이티브에 비하여 15%속도 손실이 있었다고 한다. 이 수준은 매우 미미해서 테스터들은 속도저하를 전혀 실감하지 못했다고 한다. 많은 연산을 수행하는 3D엔진이 이정도이면 대부분의 일반적인 비지니스 로직은 거의 아무런 속도 손실이 없다고 봐도 과언이 아니다. 그러므로 닷넷으로 만든 어플리케이션에 대해서 속도가 저하될 것을 우려할 필요는 전혀 없다는 것이다.

오히려 기존 코드를 닷넷으로 포팅할경우 닷넷 라이브러리와 기존 라이브러리를 동시에 사용할수 있기 때문에 프로그래밍 작업이 한결 자유로워진다. 닷넷으로 포팅되면 아래와 같은 이점이 생긴다.

1. 메모리 관리를 가비지컬렉션(Garbage Collection)을 사용하거나 프로그램으로 직접 컨트롤 할 수 있다.
2. 닷넷 프레임웍을 메쏘드 사용하거나 기존 윈도우 API를 사용하거나 마음대로 선택할 수 있다.
3. 닷넷 프레임웍 클래스와 STL같은 기존 라이브러리를 동시에 사용이 가능해진다.

QuakeII 포팅에 대한 자세한 내용은 아래 링크를 참고 하기 바란다.(영문)
http://www.codeproject.com/managedcpp/Quake2.asp#xx677031xx

 


게시일자 Tuesday, October 04, 2005 (Archive on Tuesday, October 11, 2005)
게시자: 사이트관리자  저자: 불나방
돌아가기

평점:
평가:
평가 올리기

현재평점평균: 2.80
평점: 3
완존 닭넷이여.. 느려터져 몬쓰겠음. kimjaeyong@naver.com
평점: 1
PC부팅한 다음 닷넷 어플리케이션 최초구동시 무시못할 딜레이가 있습니다. 두번째 실행부터는 빨라지죠. win32 API는 OS와 긴밀히 통합되어 있지만 .NET Framework는 OS에 추가설치하는 애드온이기 때문에 속도문제는 필연적으로 발생할 수 밖에 없습니다. 비즈니스 애플리케이션의 경우도 exe파일 용량이 200k 정도만 되면 초기구동시 눈에 띄는 딜레이가 발생합니다. 결론: 닷넷환경에서 속도문제는 무시할 수 없는 수준이다. 꽝꽝꽝
평점: 1
퀘이크 2의 경우에는 대부분의 컴퓨터에서 느려짐을 느끼지 못할 것입니다. 이미 퀘이크 3도 구형 펜티엄에서 잘 돌아갈만큼 낡은 게임입니다. 둠 3로 하면 결과는 완전히 달라졌을것입니다.
평점: 5
평점: 4
Terms | Privacy | host
Copyright 2005 Code99.NET
 | 아티클 | 자료실 | 블로그 | Q&A | 관리자에게