none
C++/CLI, C# 등 managed code가 native unmanaged code에 비해 느린가요? RRS feed

  • 질문

  • C++/CLI, C# 등 managed code로 만든 application이 native unmanaged code로 만든 application에 비해 느린가요?

     

    궁금한 것은,

    보통 일반 사람들이 virtual machine을 쓰는 언어들이 느리다고 생각하기 마련인데,

    꼭 그렇지만은 않을 것 같습니다.

    하지만, 확신이 없어서 질문을 드려요.

     

    제 생각에는 느릴 수 있는 원인은 2가지 정도일 것이라고 생각하는데요,

    1. 중간 언어(CLR(?))를 거쳐서
    2. - 처음에는 /clr option을 빼고 build할 수 있는 줄 몰라서, native unmanaged code도 dot net framework에서 실행되기 때문에 CLR을 거친다고 생각했는데, /clr option을 빼면, visual studio 2002(?) 이전 버전을 쓸 때처럼 바로 machine code로 바뀌나보죠?
    3. memory alloc/dealloc 을 수동으로 못만져서

    managed code가 dot net framework용 중간 언어로 바뀌는 단계를 거치기는 하지만, JIT compiler를 쓰기 때문에, 바로 machine code에 비해 느리지 않을 것이라고 생각합니다. 제가 틀렸을까요? 조금이라도 더 느릴까요?

     

    그리고, garbage collection 때문에 느릴 수 있다는 원인에 대해서는:

    C#으로도 memory pool을 이용해 coding을 잘 해서, loop 안에 memory allocation을 안하면, 느리지 않다는 얘기가 있네요, 사실인가요?

     http://www.grimes.demon.co.uk/dotnet/man_unman.htm

     http://stackoverflow.com/questions/3016451/performance-of-managed-c-vs-unmanaged-native-c

     

    그 외 다른 원인이 있나요?

     

    unmanaged code, managed code를 섞어쓰면 overhead가 있다고는 들었는데,

    http://msdn.microsoft.com/ko-kr/magazine/dd315414.aspx

    managed code만 썼을 때 얼마나 느릴지에 대한 확신이 없습니다.

    참고할 만한 site가 있을까요?

     

    그리고, dot net framework api 중에도 내부적으로 unmanaged, managed code가 있을 텐데, 

    dot net framework library가 win32, mfc, atl library에 비해 느려서

    dot net framework에서 만든 application이 느릴 수도 있나요?

     

    읽어봐 주셔서 고맙습니다.

     

     

     

     


    • 편집됨 순수과학 2011년 6월 1일 수요일 오전 2:53 link 추가
    2011년 6월 1일 수요일 오전 2:52

답변

모든 응답

  • managed code 가 Native에 비해서 많이 느리더군요 

    단순히 C# WinForm 에서 for 를 한 10만번 돌기런 C++ 돌린거랑 비교 해보세요

    그차이가 실감 나실겁니다.

    2017년 7월 17일 월요일 오전 5:49
  • .NET의 경우 대부분이 Startup시에 Performance impact이 있는 데, Assembly loading과 관련한 I/O 쪽에서의 Impact이 대다수고, 다소 JITting에서의 impact이 있습니다. 이 두 부분에 있어서는 최신 .NET framework에서는 과거 보다는 많은 향상이 있다고 보시는 것이 좋을 듯 하구요, 다소 오래된 WPF 성능 관련 문서인데, https://blogs.msdn.microsoft.com/jgoldb/2007/10/10/improving-wpf-applications-startup-time/ 를 보시면 몇가지 포인트를 얻으실 수 있으리라 생각됩니다.
    2017년 7월 18일 화요일 오전 2:29