2012-12-27 4 views
-2

차량 라우팅 프로젝트에 대한 C++ 코드를 작성했습니다. 내 델 노트북에는 우분투와 윈도우 7이 둘 다 설치되어 있습니다. UNIX 플랫폼에서 gcc 컴파일러로 코드를 실행하면 Windows OS에서 Visual C++ 2010과 동일한 코드 (동일한 시스템에있는 두 코드 모두)보다 적어도 10 배 이상 빠릅니다. 이것은 하나의 특정 코드에 대한 것이 아니라, 내가 사용해온 거의 모든 C++ 코드에서 발생합니다.GCC v/s 시각적 스튜디오 런타임 차이

나는 runtimes와 같은 큰 차이에 대한 설명이 있고 gcc out이 시각적 인 C++ 런타임을 현명하게 수행하는 이유를 가정하고있다. 아무도 날 이걸 깨달을 수 있니?

감사합니다.

+1

Windows에서 릴리스 빌드를 사용하고 있습니까? –

+1

Windows와 Linux에서 모두 똑같은 코드를 사용하고 있다면 Windows API를 직접 사용하는 대신 Unix (Linux) 시스템 호출의 Windows 시뮬레이션을 사용하고있을 것입니다. 이것은 차이를 설명 할 수 있습니다 (또는 적어도 차이점 중 일부). –

+0

비주얼 스튜디오 (윈도우 아래)에서 프로그램을 실행하는 동안 리눅스에서 일반 명령 (컴파일 된 바이너리)을 실행하고 있기 때문에 그렇지 않습니다. 물론 더 많은 리소스가 필요합니까? – xhudik

답변

0

내 컴파일러는 모두 동등하지만 몇 가지주의해야합니다. 1. Visual Studio는 기본적으로 스택 검사를 기본으로합니다. 즉, 모든 함수가 작은 양의 "memset "작은 양의"memcmp "로 끝납니다. 퍼포먼스를 원한다면 끄십시오 - 10 요소 배열의 11 번째 요소에 쓸 때 잡기에 좋습니다. 2. Visual Studio는 버퍼 오버 플로우 검사를 수행합니다. 다시 말하지만, 이것은 실행에 상당한 시간을 추가 할 수 있습니다.

참조 : 나는이 일반적으로 디버그 모드에서 사용할 수 있지만 릴리스 빌드 최적화 -O2 또는 -O3 gcc가에 빌드에서 비슷한 결과를 얻을해야하므로하지 릴리스에서 빌드하는 생각 Visual Studio Runtime Checks

.

이것이 도움이되지 않는다면 아마도 작은 (컴파일 가능한) 예와 각각의 타이밍을 줄 수 있습니다.

관련 문제