C#, C++ 속도 비교..

요새 간간히 예전에 짜놓은 C++ 코드를 조금씩 C#으로 바꾸어 비교해보고 있다.

물론 내가 사용하는 코드들은 고정된 산술 연산을 엄청나게 반복하는 것들이다.

아직 C#에 익숙하지 않아서 C#에 맞게끔 코드를 최적화할 줄도 잘 모르며,

내가 쓰는 코드들이 엄청나게 최적화할 수 있을 만큼 복잡한 작업을 수행하는 것이 아니라,

어디까지나 단순한 산술 연산을 반복적으로 수행할 때, C++과 C# 중에 뭐가 빠르냐에 대한

단순한 벤치마크라고 할 수 있을 것이다.

다행인지 불행인지 10건에 대해서 모두 테스트해본 결과 C#가 모두 우세한 결과를 보여주고 있다.

그러나, 원래 시간이 많이 걸리는 약간 복잡한 함수에서는 아무리 최적화를 해봐도 C#이 C++에 비해 엄청 나쁜 성능을 보여준다. 경우에 따라서 2배 가까이 느린 경우도 발생한다. 차라리 이런 작업은 인라인 어셈블리라도 쓰고 싶은 심정이다.

물론 실행시 메모리를 잡아먹는 것이나 CLR을 필요로 하는 것들 모두 C#이 불리한 조건이긴하다만, C/C++처럼 무뚝뚝하게 뻗어버리거나 하는 대신 C#에서는 친절하게 어디에서 문제가 일어났는지 설명해준다 (누가 내 코드에 이런 디버깅 코드를 심어 놓았는지 당장 가서 지워버리고 싶을 정도로).

특히 x64 윈도우즈에 가져다놓고 실험하면 속도의 격차는 더 벌어진다. C/C++은 그다지 속도 향상이 없는 반면 (물론 C/C++ 코드도 x64에 맞게 새로 컴파일했다. C#은 재컴파일 할 필요가 없다) C#은 속도가 크게 향상됐다.

오버헤드가 붙는 문제든 컴파일러의 최적화든 뭐든 떠나서, 결과만을 놓고 봤을 때 나의 컴퓨팅 환경에서 C#이 분명 유리한 선택임은 확실한 것 같다.

그나저나 C#에 관한 좋은 책 없나? 몇 권 읽어봤는데, Windows Forms에 대한 내용 (요개 그림으로 페이지수를 늘리긴 쉬운 테마 같다)이나 Web 프로그래밍에 주로 관련된 내용이고, C/C++에서 migration하려는 사람을 위한 책은 없는 것 같다. 그 얘기는 돌려 생각해보면, 나처럼 C/C++에서 migration하려는 사람이 별로 없단 얘기가 되는데..음..내가 뭔가 잘 못 생각하고 있는 것일까?