4

sconsを使用して構築された大きなC++プロジェクトがあります。ビルドが遅いので、ビルドを速くするためにいくつかの変更を加えたいと思います。ここで、ビルドの最も遅い部分を高速化することに時間を集中したいと思います。

コンパイルに最も時間がかかるファイルを特定するにはどうすればよいですか?

4

3 に答える 3

3

この質問は古く、すでに受け入れられていますが、最近別の質問から参照されました。この回答で述べたように、はるかに洗練された解決策は、SCons--debug=timeコマンドラインオプションを使用することだと思います。

于 2013-02-23T20:02:28.997 に答える
2

CXXCOM変数の先頭にいくつか追加することで、これを解決しました。Sconsはこの変数を使用して、実際のコンパイルを実行します。

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

次に、このようなものを使用してsconsを実行します

BUILD_STYLE=timing scons > timing_log.txt

そして最後に、いくつかのvimマクロを使用してログを整理します。

于 2010-08-31T11:55:00.553 に答える
2

LInuxを使用している場合は、ラッパーを使用するgccg++、コンパイラーの呼び出しでgtimeユーティリティを使用することができます。コンパイラへのすべての呼び出しは次のようになります。

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

BASHには、引数を再度エスケープする必要がないようにするための魔法の構文があります。

#!/bin/bash -f
PATH_TO_COMPILER_DIR=/usr/bin
/usr/bin/time $PATH_TO_COMPILER_DIR/"$@"

次に、$ PATH変数を指定して、コンパイララッパーを作成します。

次に、オプションを使用して、1つの並列スレッドのみでSConsを実行します-j1

于 2010-08-04T22:21:58.850 に答える