我如何找出编译器花费的时间?
我如何找出编译器花费的时间?
我的构建速度太慢,我已经在使用RAMdisk作为VC ++临时文件,并且没有任何区别。 (我有一个SSD,所以我预计没有区别。)
该项目中的大多数单个C ++文件大约需要。 2秒来编译这看起来很糟糕(因为我使用VS2005,我也没有任何项目内并行化)。
我怎样才能优化这个? 不要优化没有分析,但我如何分析编译器?
注意:这些不是很有帮助:
我们来添加一个好评:你有很多模板吗? 您的文件平均多大? 你是否检查过只包含最少必要的标题
不,我没有。 我当然可以(并且很可能会)。 我可能能够找到一些东西,但这都是猜测和反复试验 !
“每个人”都告诉你,你应该只在测量/分析后进行优化,但是当优化编译时间时,我们又回到了试验和错误?
注意:使用__TIME__
从注释中提出的“hack”不起作用,至少不在Visual-C ++中,因为(如文档状态):当前源文件的最近编译时间 。 时间是形式为hh:mm:ss的字符串。 - 我猜这个图章至少可以获得单个编辑单元的时间安排,但是这无助于深入到编译单元。
SysInternals ProcMon会显示选定进程完成的所有I / O,包括发生时的时间戳和完整路径。
有几种方法可以优化编译时间:
使用预编译头。 如果您使用Visual C ++而不是使用“stdafx.h”。 默认情况下,“stdafx.h”被设置为预编译头文件,但我建议您检查一下以确保它是。
使用Linux :)。 如果你不需要使用Windows来进行你的工作,我推荐使用Linux。 编译时间要好得多。 其中一些原因是:ext4平均比NTFS快约40%,并且它拥有更好的进程调度程序。 当谈到处理器操作时,Linux通常会做到〜x1.8 - x2倍,并且编译依赖于处理器。
使用另一个编译器。 已知Clang / LLVM具有更好的编译速度,并且还支持预编译头文件。