2013년 12월 9일 월요일

C#이 C++보다 빨라진다?


C#과 C++의 성능에 대해서는 참 많은 말들이 있습니다. 물론 현재는 C#이 C++보다 느리지요. 근데 CPU 기술 발전과 JIT 컴파일러가 C#을 더 빠르게 만들지도 모른다는 생각이 들어서 제 생각을 공유합니다.

댓글 11개:

  1. 이것과 유사한 얘기가 JAVA의 첫 등장에도 있었던걸 보면
    C++ 진영의 발전도 무시못할것 같아요.
    저는 C#의 생산성을 사랑하지만 C++의 하드코어스러움도 좋아합니다 : )

    답글삭제
    답글
    1. 자바의 문제점은 자바를 소유한 회사의 VM이나 컴파일러 만드는 실력이 개판이었다는거죠 -_-;

      삭제
  2. http://www.zdnet.com/microsoft-shows-off-its-next-generation-project-n-compiler-technology-7000023156/

    관련이 있을 수도 있는 기사를 본 기억이 나서 참고하시라고 링크를 올립니다.
    닷넷용 앱을 native code로 컴파일 시켜주는 프로젝트가 진행중인 것 같다는 것입니다.

    저도 C#이 제일 편한 언어라는 생각인데요, 닷넷이 님이 언급하신 문제들 외에도 app을 띄위는 시간이 많이 걸린다는 것도 큰 약점인 것 같습니다. 아주 간단한 유틸용 app도 기동시간이 상당히 소요되더라고요.

    답글삭제
    답글
    1. 1)
      좋은 링크 감사합니다.. 근데 저렇게 exe로 만들어버리면 결국... C++의 문제점이 그대로 생기는건데요.. 타겟 플랫폼 별로 exe를 만들어줘야 하는... 그럼 QA도 더 해줘야 하고.. exe파일 배포도 더 힘들어지고 등등 -_-;

      참고로 MONO에서는 이미 binary injection을 해주는 기능이 있습니다. 마소가 하는것도 그거와 매우 비슷하겠네요.

      2)
      app 처음 띄우는게 시간 걸리는건 확실히 문젠데... 사용자 경험측면에서는 별 문제가 없지 않나요? 처음에 조금 느리고 실행중에만 안느려진다면 전 크게 문제는 없다고 생각하는 주의라서요....

      삭제
  3. 플랫폼별 exe파일 배포를 너무 안좋게 만 보는건 아닐까요? 일단 요즘 PC 게임이 대부분 업데이트를 제공하거나 온라인 접근이 가능한 상태로 배포 되다보니 설치나 배포시 플랫폼을 CPUID 같은걸로 조사해서 SIMD 지원여부에 따라 2단계나 3단계 등으로 나눠서 (예를들면 1단계는 mmx 까지만 지원, 2단계는 sse5까지 지원 등...) 설치시 선택적으로 실행파일을 다운 받게 하는건 어떨까요? 나쁜 아이디어 일려나;; 아무튼 생각을 너무 단편적으로 하시는거 같아 한마디 적고 갑니다 ^^

    답글삭제
    답글
    1. 재득님이 말씀하신 것들을 아마 비디오에서도 말했다고 생각하는데요.. exe파일이 하나씩 늘어날때마다 QA비용이 그 수만큼 뛰어서 사실상 참 어려운 일이죠.

      사실 가장 큰 문제는 인텔에서는 계속 새로운 기능들을 추가해주는데 소프트웨어 개발자로는 그걸 전부다 지원해 주기가 너무 어렵다는거에요. 그래서 그런문제가 없는 C#이 C++보다 빨라질수 있을까? 라는 생각을 했던것 뿐입니다. (반드시 빨라진다고는 하진 않았어요 후후후 ^_^)

      삭제
    2. 답변 감사합니다. 그런데 갑자기 뻘생각이 났어요;; 만약 회사가 텐센트 라면!?

      삭제
    3. 돈 많은 회산가요? 제가 잘 몰라서 -_-a 돈많은 회사라도 굳이 돈 더 안들여도 되는것에 들이려고 하진 않겠죠.. 무조건 적당히 낮은 사양으로 맞출겁니다~

      삭제
    4. 돈은 모르겠는데(찾아보면 좀 부자회사인듯..) 들은 바로는 QA 인력에 리미트가 없다고 하더군요;;; 그냥 무한 제공;;; 온라인의 경우 내부 테스터만 2~3만 (한 타이틀) 동원 한다네요; ㅎㄷㄷㄷ

      삭제
    5. 중국회사이겠죠?... 그럼 대규모로 싸구려 인력을 동원.. 오오 '_'

      삭제
    6. 네 중국 회사예요 ㅋㅋㅋㅋ

      삭제