2011-03-09 4 views
14

내 프로젝트의 컴파일 시간이 상당히 길어서 이것을 최대한 줄이고 싶습니다. 그러나 지금은 프로젝트를 둘러보고 무거운 물건을 순수한 직감으로 제거하려고합니다.프로파일 링 및 최적화 컴파일

내 컴파일 시간의 대부분을 차지하는 것을 식별하는 데 사용할 수있는 유용한 정보를 얻을 수있는 수준에서 내 컴파일을 프로파일 링하고 싶습니다.

Visual Studio에서 "Build Timing"을 활성화하려고했지만 컴파일러에서 수행하는 다른 작업의 타이밍보다 많은 정보를 제공하지 못합니다. 대부분의 시간이 "CL"에 소비된다는 사실은 그리 유용하지 않습니다.

라인 또는 파일 타이밍과 같이 낮은 레벨에서 컴파일을 프로파일 링 할 수있는 방법이 있습니까?

+1

아니요. O (n) 복잡도를 가지므로 코드를 별도의 DLL로 스핀하여 n을 줄입니다. 템플릿은 저렴한 btw되지 않습니다. –

+3

템플릿이 저렴하지 않다는 것을 알고 있습니다. 그러나 어떤 템플릿 인스턴스화에 시간이 걸리는지 알면 좋습니다. 몇 가지 부스트 라이브러리가 80 %의 시간이 걸리는 경우 구현을 변경하는 것이 좋습니다. – ronag

+1

좋은 질문입니다. 타이밍 도구를 컴파일하고 싶습니다. – Inverse

답변

1

내가 제공 할 컴파일 프로파일 링 조언을하지 않습니다에 대한 좋은 가이드입니다. 헤더 파일

  • 사용 앞으로 선언 최대한에만 사용해야 할 경우

    C++에서

    , 클래스 앞으로 선언 할 수있다 : 그러나, 여기에 컴파일 시간을 줄이기 위해 몇 가지 팁입니다 (모든 개체 포인터가 동일한 크기이므로이 클래스 형식의 포인터는 컴파일러가 신경 쓰는 클래스입니다). (출처 : http://en.wikipedia.org/wiki/Forward_declaration)

  • 는 또한, Pimpl 관용구를 사용하면 컴파일러는 당신이 수정 한 부분 만 다시 컴파일 할 수 있도록함으로써 당신에게 많은 도움이 될 것입니다. http://en.wikipedia.org/wiki/Opaque_pointer

  • 라이브러리의 모든 포함 파일을 포함하고 실제로 필요로하는 헤더 만 포함하는 포괄적 인 포함 파일을 사용하지 마십시오.