2012-08-24 4 views
1

C 또는 C++로 작성된 함수를 모바일 응용 프로그램인지 일반 응용 프로그램인지에 관계없이 생각합니다.C# 응용 프로그램 성능의 C++ 코드에 액세스

C# 환경 (응용 프로그램)의 C++ (수학 처리)로 작성된 코드가 C#으로 작성된 경우 (이론적 인) 동일한 코드를 실행하는 속도가 더 빠릅니까?

감사합니다.

두 번째 질문 : DLL에서 외부 액세스하지 않고 C# 응용 프로그램에 C++ 코드를 포함하고 액세스 할 수 있습니까?

+0

'-ffast-math'와 같은 것을 원한다면, C++이 당신에게 어떤 도움을 줄 것이라고 믿습니다. 그렇지 않으면 귀찮은 가치가 없거나 C++뿐만 아니라 SSE에 가치가있을 수도 있습니다. UPD : 경계를 넘어서 "++"를 많이 할 수는 없습니다. 일반 C 스타일 전화. –

답변

0

당신이 가까운 C#에서 올 수 있습니다 일반적으로 C++ 버전 (내 경험) 빠르지 만. C++ 최적화 컴파일러는 더 나은 작업을 수행하고 (컴파일/최적화하는 데 더 오래 걸릴 수 있음) C++에서도 SSE와 같은 것을 사용하여 수학 작업을 빠르게 할 수 있습니다. 이는 C#에서 매우 성가신 일입니다. SSE에서 어셈블러처럼 5 배 더 빠른 큰 정수 곱셈을위한 코드를 만들었습니다. 동일한 C++ 코드로 10 % 더 빠릅니다. 5x는 대부분 SSE에서 단일 명령으로 2x 32 비트 곱하기를 수행 할 수있게되었습니다.

C#에서는 포인터가 많은 부분을 처리 할 수있는 안전하지 않은 코드를 허용합니다. 배열 처리와 같은 작업 속도가 빨라집니다. 일반적으로 배열의 모든 영역을 검사하여 배열의 강도 높은 연산 처리에 도움이됩니다. 그리고 당신은 사용하여 다시 떨어질 수 관리되지 않는 DLL의 C++로 작성

코드는 내가 아마 재미있을 것이다 최적화 생각 끝에서 시간 동안 실행되지만 정말 가치가없는이

있었다 ;-) 그래서하지 않는 한 /는 C++과 C#을 더 쉽게 혼합 할 수 있도록 Microsoft의 .NET 용 C++/CLI 변형입니다. http://www.functionx.com/cppcli/Lesson01.htm을 참조하십시오. 아직 지원되는 것이 확실하지 않으며 수집 한 내용에서 처음부터 눈살을 찌푸 리니 확실하지 않습니다.

VirtualMachine 언어의 성능이 프리 컴파일 된 언어와 다른 이유는 무엇입니까? Why are JIT-ed languages still slower and less memory efficient than native C/C++?

관련 문제