我如何找出编译器花费的时间?

我如何找出编译器花费的时间?

我的构建速度太慢,我已经在使用RAMdisk作为VC ++临时文件,并且没有任何区别。 (我有一个SSD,所以我预计没有区别。)

该项目中的大多数单个C ++文件大约需要。 2秒来编译这看起来很糟糕(因为我使用VS2005,我也没有任何项目内并行化)。

我怎样才能优化这个? 不要优化没有分析,但我如何分析编译器?

注意:这些不是很有帮助:

  • 剖析C ++编译过程
  • 在Visual Studio中显示构建时间? (尽管如此,如果你进行单一文件编译,而不是整个项目,它将显示单个文件所需的时间:这样我看到这里的一些文件需要更多的5秒,单独编译时甚至有10秒)

  • 我们来添加一个好评:你有很多模板吗? 您的文件平均多大? 你是否检查过只包含最少必要的标题

    不,我没有。 我当然可以(并且很可能会)。 我可能能够找到一些东西,但这都是猜测反复试验

    “每个人”都告诉你,你应该只在测量/分析后进行优化,但是当优化编译时间时,我们又回到了试验和错误?


    注意:使用__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具有更好的编译速度,并且还支持预编译头文件。

  • 链接地址: http://www.djcxy.com/p/85449.html

    上一篇: How do I find out where the compiler spends its time?

    下一篇: start() takes VERY LONG TIME