我怎样才能创建一个表来获取每个C ++文件的编译时间在Visual Studio 2005中的项目。
Answer 1:
我使用Visual Studio 2010,但Visual Studio中的其他版本可能有类似的东西。 在VS2010您可以添加到命令行选项/ BT +它打印编译每个文件所用的时间。 所以在“配置属性”项目属性 - >“C / C ++” - >“命令行” - >“其他选项”添加/ BT +
设置/ BT +选项导致输出(被记录在日志文件中),如下面的行:
time(c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\c1.dll)=0.05110s < 25394686804 - 25394831194 > BB [C:\not-important\nlopt-2.4.2\direct\DIRect.c]
在该选项的详细信息https://blogs.msdn.microsoft.com/vcblog/2010/04/01/vc-tip-get-detailed-build-throughput-diagnostics-using-msbuild-compiler-and-linker/我发现多亏了这个答案https://stackoverflow.com/a/3513043/453436
有很多方法可以提取取决于你有提供给你什么样的工具的时间线。 我做到了与查找,grep和perl的组合是bash shell下。 下面将为您整理时间最长的第一编译时间。
find . -name '*.log' | xargs grep time | perl -ne '$_ =~ /=(.*?)s.*\[(.*)\]/; print "$1 $2\n";' |sort -rn
Answer 2:
“工具” - > “选项” - > “项目和解决方案” - > “VC ++项目设置”
勾选“生成时序”。
Answer 3:
它已经有一段时间,因为我已经使用了版本的编译器,但我记得它打印文件它编译到控制台(当你使用命令行版本)的名称。 如果是这样的话,那么你可以写一个程序,执行以下操作:
- CreateProcess的在命令行上的编译器,重定向标准输出到管道
- 从管道中读取,寻找源文件名
- 每一个源文件名上线时间,请注意当前的时间戳
- 当管道被关闭,打印出对各文件构建时代
虽然这种方法可以在C ++来开发,它可能会更容易使用的工具如Perl来实现它。
文章来源: print compilation time of each file in visual studio C++