在Visual Studio C中的每个文件的打印编译时间++(print compilation

2019-09-18 05:26发布

我怎样才能创建一个表来获取每个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:

它已经有一段时间,因为我已经使用了版本的编译器,但我记得它打印文件它编译到控制台(当你使用命令行版本)的名称。 如果是这样的话,那么你可以写一个程序,执行以下操作:

  1. CreateProcess的在命令行上的编译器,重定向标准输出到管道
  2. 从管道中读取,寻找源文件名
  3. 每一个源文件名上线时间,请注意当前的时间戳
  4. 当管道被关闭,打印出对各文件构建时代

虽然这种方法可以在C ++来开发,它可能会更容易使用的工具如Perl来实现它。



文章来源: print compilation time of each file in visual studio C++