4

我有一个使用 scons 构建的大型 C++ 项目。它的构建速度很慢,我想进行一些更改以使其构建速度更快。现在我想集中精力加快构建中最慢的部分。

如何计算出哪些文件编译时间最长?

4

3 回答 3

3

我知道这个问题很旧,并且已经被接受,但是最近从另一个问题中引用了它。我认为更优雅的解决方案是使用 SCons--debug=time命令行选项,如this answer中所述。

于 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 变量指向您的编译器包装器。

然后通过 option 仅使用 1 个并行线程运行 SCons -j1

于 2010-08-04T22:21:58.850 回答