2009-07-10 4 views
1

프로젝트를 빌드 할 때 빌드 시간이 너무 길어지면 놓습니다.릴리스 빌드 시간이 오래 걸립니다 VS2008

릴리스에서, 시간을 연결하는 것은 : 디버그 130secs

는 시간을 연결하는 것은 : 같은 프로젝트에 대한 15secs.

컴파일하는 데 차이가 없지만 큰 차이가 있습니다.

왜 그런지 알 수 있습니까?

+0

증분 연결 또는 기능 수준 연결 설정 때문일 수 있습니까? – sharptooth

+0

릴리스와 같은 사운드가 설명보다 훨씬 짧습니다. –

+0

귀하의 주제 및 질문에 동의하지 않습니다. 귀하의 질문에 디버그 빌드 (130s) 오래 걸릴 및 릴리스 빌드 짧은 (15s) 상태. 어떤거야? –

답변

3

최적화 설정으로 인해 릴리스 빌드가 느려질 수 있습니다. 일반적으로 디버그 빌드의 경우 최적화 설정이 없습니다. 즉, 생성 된 객체 파일이 출력에 곧바로 복사됩니다. 반면에 릴리스 빌드의 경우 LTCG이 켜져 있거나 다른 링커 최적화가 적용될 수 있습니다. 링크는 일반적으로 CPU 바운드이며 일반적으로 단일 스레드에서만 실행되므로 다소 느려지는 경향이 있습니다. 출력이 클수록 더 나 빠진다.

+1

+1 "링크가 정상적으로 CPU 바인딩 됨"을 제외한 +1. 종종 연결은 디스크 I/O 경계입니다. –

0

제 경험으로는 링크하는 동안 대부분의 시간이 디버그 정보를 생성하는 데 소요됩니다. 디버그 정보없이 링크하려고하면 링크 시간이 길어집니다 (제가 작업중인 프로젝트는 약 80 초에서 약 10 초가됩니다). 그렇지 않다면 다른 것입니다. 디버그 빌드에서 긴 링크 시간은 잘못된 증분 링크로 인해 발생할 수 있습니다. 링크 시간이 1 분에서 5 분으로 늘어나는 것을 봤습니다. 디버그 정보를 유지하면서 링크 시간을 줄이려면 모든 컴파일 단위의 디버그 정보를 병합해야하므로 가능한 한 적은 수의 컴파일 단위를 유지해야합니다. 하나의 cpp 파일에 이러한 cpp 파일이 포함되도록하여 여러 개의 cpp 파일을 하나의 컴파일 단위로 결합하면됩니다.

감사합니다,

Sebastiaan

0

나는 내 머리 위로 떨어져 생각할 수있는 유일한 방법은 당신이 릴리스 모드에서만 실행의 FxCop 세트를 가지고있다. 이 기능을 사용하면 빌드 프로세스의 일부로 FxCop가 실행되므로 큰 프로젝트에서 상당한 빌드 시간 차이가 발생할 수 있습니다.

솔루션에 대한 자세한 정보를 제공해 주실 수 있습니까? 예 :

  • 어떤 언어입니까?
  • 어떤 유형의 프로젝트입니까?
  • 프로젝트의 파일 수는 얼마입니까?
  • 명령 줄에서 다시 실행 하시겠습니까?
+0

- 그것은 C++ 프로젝트입니다. -이 프로젝트에서는 openSceneGraph와 qt를 함께 사용합니다. - 200 개 이상의 파일이 있습니다. - qt 파일이 컴파일시 재생됩니다. 연결에서 아무 repro가 없다. – ufukgun

관련 문제