我正在Windows XP上用C ++开发一个应用程序,使用Eclipse作为我的IDE,使用基于Makefile的构建系统(使用自定义工具生成Makefile)。另外,我正在使用LZZ,它允许我编写一个文件,然后将其拆分为头文件和实现文件。我正在使用TDM的GCC 4端口。
我可以使用哪些工具或技术来确定构建过程的每个部分的确切时间,以及它为什么会变慢?
特别感兴趣的是:
P.S。:这是我的家庭项目,所以昂贵的工具对我来说是遥不可及的,但如果它们特别相关,可以在这里记录。
答案 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版本提供了分析信息。