![]() |
|
||||||||
경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지 |
|
말씀하신것처럼, 닷넷은 순간반응속도는 참 거지같습니다.
하지만 약 5년전에 프레스기에서 생산된 제품의 불량여부를 판별하기위해 제품을 일일이 촬영해서 알고리즘으로 가려내는 프로젝트를 델파이와 c#으로 동시에 만들어 테스트해본적이 있었습니다. 알고리즘은 인터넷에 떠돌아다니는 자바소스를 우연히 구해서 델파이와 c#으로 포팅해서 구현했네요. 여기서 놀라운 사실을 발견했었었죠. 성능이 당연히 델파이가 좀 빨랐었는데, 그건 네트워크나 파일에서 이미지를 불러와 차리하고 다시 네트워크로 결과값을 보낸뒤, DB에 저장하고 프로그램에 보여주는 전체과정이 빨랐던거구요... 똑같은 알고리즘이 적용된 이미지처리 부분은 의외로 닷넷이 표가 날 정도로 빨랐던 기억이 납니다. 뭐가 이럴때 더 좋은거지, 뭐가 무조건 다 좋은건 아닌 좋은 예가 아닐까요? 닷넷이 놀라운 속도를 보이는 파트의 대부분은
네이티브 코드로 작성된 라이브러리를 사용합니다. 그 라이브러리는 최신의 기술로 만들어진 최고 수준의 라이브러리입니다. 닷넷의 속도 문제를 의식한 MS에서 정책적으로 이런식으로 해온 것으로 알고 있습니다. 이미지 처리 같은 경우 닷넷으로 해도 속도가 떨어지지 않는 일이 있는데 그게 다 네이티브로 만들어진 라이브러리 영향입니다. 실제 픽셀 하나 하나 제어해서 이미지를 변형하는 경우 등 실제 코드가 많이 들어가는 경우 확연히 C++이나 델파이의 네이티브 성능이 좋습니다. 저도 예전에 닷넷으로 이미지처리를 해보고 기대 보다 훨씬 빨리 놀랐던 적이 있습니다. 그건 닷넷 자체가 빠른게 아니고 라이브러리 때문이었습니다. 사실 속도 문제의 대부분을 차지하는 부분은 가장 연산이 많은 특정한 루틴 부분이기 때문에 그곳이 네이티브코드로 최적화 되어 있으면, 그냥 호출자 역할을 하는 닷넷이나 스크립트나 매우 좋은 성능을 보여준다고 생각되게 만듭니다. 닷넷 그 자체도 사실 그리 느리지 않으나, 최적화된 네이티브 코드 보다 빠른 건 그 어디에도 없습니다. Turbo C, Assembler 부터 시작해서 20년 넘게 CBuilder와 Delphi를 주력 개발툴로 사용하다 얼마전에 C#으로 갈아탔습니다.
전 장비제어 개발 위주여서 몇년전부터 비젼이나 여러 제어 카드들이 볼랜드툴을 지원하지 않는 경우가 많아서 어쩔 수 없이 바꾸었는데, 사용자의 성향이나 환경에 따라 다르겠지만 저에게는 C# 이거 정말 걸출한 개발툴입니다. 메모리 관리에 신경 쓸필요가 없으니 안정성이 증가 되었고, MultiThread는 네이티브 보다도 뛰어난것 같습니다. 예를 들어 C++에서 Sleep(1)로 Context Switching을 하면 제어권을 1초당 1000번을 받는게 아니라 약18회정도만 받습니다. 하지만 C#은 정확히 1000번을 받습니다. 물론 C++도 SwitchToThread()를 쓰면 수십만번도 받지만 대신 CPU점유율이 올라가죠. 수많은 Thread에서 정확한 시간제어가 필요한 장비제어 분야에서는 제 생각에는 Delphi 보다도 뛰어난 툴인듯 합니다. 그리고 닷넷에서 Thread동작이 Native와 다른것은 닷넷에서 생성하는 쓰래드가 OS의 쓰래드에 1:1 매칭이 되지 않기 때문입니다.
OS의 쓰래드는 기본적으로 커널에서 설치하는 타이머 인터럽트의 해상도가 1ms 보다 훨씬 크기 때문에 오버헤드가 없이 1ms 의 컨텍스트 스위칭 타이밍을 지킬수가 없습니다. 중간에 작업을 더 해야지. 궂이 하고 싶으면 timeBeginPeriod(1) 를 호출하여 타이머 해상도를 올려 두면 Native 에서도 Sleep(1)을 호출할때 거의 정확하게 1000번의 스위칭을 받을 수 있습니다. 사실 게임이나 동영상 관련 프로그램들은 대부분 이거 호출 해 둡니다... 최대한 타이밍을 지키기위해 여기서 제가 정말 화나는 부분이 나옵니다.
델파이나 빌더 하면 vc와 비교해서 성능적으로는 어깨를 맞대면서 생산성은 극대화되는 거였는데... vs가 극악의 성능은 vc로... vc와 연동해서 극악의 성능을 유지하며 생산성은 닷넷기반으로 하는 구조적인 부분이 이미 완성단계에 들어선것 같습니다. 버그투성이 개발툴을 돈받고 파는 업체로 인신매매(?) 되면서 비전도 없고 내세울 성능도 희박해지고, 생산성도 이젠 자랑거리도 안되는... ㅠ 지금의 델파이, 빌더를 만든 국내외 관련자들을 증오할 따름입니다! 늦었더라도 이들이 X잡고 반성이라도 할까 모르겠네요 엇..다시 찾아보니 .. VC++닷넷이아니라... C++/CLI 라는게 있나본데요..
깔쌈보이님..이건뭐죠? 이것도 날짜 보니까 2009년인데.. 지금은 없어졌나보죠? http://andromedarabbit.net/wp/cplusplus_cli_lecture_2009_01/ 관련 글 리스트
|
Copyright © 1999-2015, borlandforum.com. All right reserved. |
게임용 GUI를 루아로 제어하도록 해 두었는데, 아무래도 느리지 않을까 하는 걱정들이었지요.
게임 내 객체들의 관계만 정의할 뿐 실제 랜더링에는 아무런 관여를 하지 않는다고 설명해도
스크립트에 대한 편견은 깨기가 쉽지 않더군요.
비슷한 이유로... 전 델파이만큼 C#이 좋아요~~~ ^^;;