2010-08-04 5 views
4

나는 scons를 사용하여 빌드 된 큰 C++ 프로젝트를 가지고 있습니다. 건물이 느리고 건물을 더 빨리 만들려고 몇 가지 변경을하고 싶습니다. 이제 가장 느린 빌드 부분의 속도를 높이는 데 집중하겠습니다.scons 빌드의 각 구성 요소에 대한 빌드 시간을 어떻게 측정 할 수 있습니까?

어떤 파일을 컴파일하는 데 가장 오래 걸리는지 어떻게 알아낼 수 있습니까?

답변

2

CXXCOM 변수의 시작 부분에 몇 가지 추가 사항을 추가하여이를 해결했습니다. 나는 다음 몇 가지 정력 매크로를 사용하여이

BUILD_STYLE=timing scons > timing_log.txt 

최대 마지막으로 깔끔한 로그 같은 것을 사용하여 SCons는 실행

if os.getenv('BUILD_STYLE')=='timing': 
    cxxcom = env['CXXCOM'] 
    env.Replace(CXXCOM = 'time '+cxxcom) 

: SCons는 실제 컴파일을이 변수를 사용합니다.

2

LInux를 사용하는 경우 컴파일러에서 gtime 유틸리티를 사용하도록 gcc 또는 g++을 래퍼 할 수 있습니다. 그런 다음 컴파일러를 가지고 당신의 $ PATH 변수를 가리 킵니다

#!/bin/bash -f 
PATH_TO_COMPILER_DIR=/usr/bin 
/usr/bin/time $PATH_TO_COMPILER_DIR/"[email protected]" 

:

/usr/bin/time /usr/bin/g++ [rest of command] 

BASH 당신이 당신의 인수를 다시 도주하는 것을 방지하는 데 도움이 몇 가지 마법의 구문이 같은 컴파일러에 대한 모든 호출은 보일 것이다 싸개.

그런 다음 옵션 -j1을 통해 병렬 스레드가 1 개인 SCons를 실행하십시오.

+0

+1, 내가 원하는 방식으로 문제를 해결하지는 못했지만 제 솔루션에 사용 된 아이디어가있었습니다. –

3

나는이 질문이 오래되었고 이미 받아 들여졌지만 최근에 다른 질문에서 인용되었음을 알고 있습니다. 더 우아한 해결책은 this answer에서 언급 한 SCons --debug=time 명령 줄 옵션을 사용하는 것입니다.

관련 문제