如何分析完整的C ++构建?

时间:2010-01-27 20:20:10

标签: c++ eclipse makefile profiling build-process

我正在Windows XP上用C ++开发一个应用程序,使用Eclipse作为我的IDE,使用基于Makefile的构建系统(使用自定义工具生成Makefile)。另外,我正在使用LZZ,它允许我编写一个文件,然后将其拆分为头文件和实现文件。我正在使用TDM的GCC 4端口。

我可以使用哪些工具或技术来确定构建过程的每个部分的确切时间,以及它为什么会变慢?

特别感兴趣的是:

  • 需要花多少时间来解析Makefile,找出依赖关系,检查时间戳等?
  • 构建之前和之后Eclipse需要多长时间?
  • GCC花在解析系统和提升标头上的时间是多少?

P.S。:这是我的家庭项目,所以昂贵的工具对我来说是遥不可及的,但如果它们特别相关,可以在这里记录。

4 个答案:

答案 0 :(得分:6)

由于Make和GCC对于他们正在做的事情非常冗长,因此一个非常粗略的方法来获得对所花时间的高级概述,即通过一个脚本来管道make的输出,该脚本为每一行添加时间戳:

make | perl -MTime::HiRes -pe "printf '%.5f ', Time::HiRes::time()"

(我正在使用ActivePerl来执行此操作,但根据我收集的内容,Strawberry Perl现在可能是推荐的Windows Perl版本。)

根据您的喜好重新格式化或处理时间戳。

要获得有关GCC的更多详细信息,请使用--time-report选项。

要了解Eclipse添加了多少开销,请使用秒表为Eclipse和命令行构建时间。

答案 1 :(得分:1)

如果您正在使用boost,则很可能大部分时间都花在模板实例化和后续优化上。您可以告诉GCC报告花费的时间-time-report(UNIX选项,可能是Windows GCC上的其他内容)

如果您正在尝试加快编译时间,请禁用优化,-O0(最后一个字母为数字0,首字母为大写字母o)

答案 2 :(得分:1)

尝试SparkBuild,这是一个免费的gmake / nmake替代品,可以生成带注释的构建日志,其中包含构建中每个作业的精确计时信息。您可以将该文件加载到SparkBuild Insight中,以获得时间的图形概览。

有关如何使用它的示例,请参阅this blog

答案 3 :(得分:0)

有一个名为remake的GNU make版本提供了分析信息。