c++ - 我如何找出编译器花费时间的地方?

标签 c++ visual-c++ compiler-construction profiling build-time

我如何找出编译器在哪里花费时间?

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

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

我该如何优化呢?不进行分析就不要优化,但是如何分析编译器?

注意:这些并没有真正的帮助:


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

不,我没有。我当然可以(并且pro'lly会)。我也许能找到一些东西,但这都是推测反复试验!

“Everybody”告诉你,你应该只在测量/分析之后进行优化,但是在优化编译时间时,我们又回到了试错?


注意:__TIME__ 评论中提出的“hack”确实有效,至少在 Visual-C++ 上无效,因为(如 the docs 状态): 当前源文件的最近编译时间。时间是 hh:mm:ss 形式的字符串文字。 - 我想至少可以使用这个标记获得单个编译单元的计时,但它无助于深入研究编译单元.

最佳答案

SysInternals ProcMon 将显示所选进程完成的所有 I/O,包括发生时的时间戳和完整路径。

关于c++ - 我如何找出编译器花费时间的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406073/

相关文章:

linux - 分发静态链接的 ELF 32 位二进制文​​件 - 它会在所有平台上运行吗?

java - 我如何解析代码以在 Java 中构建编译器?

c++ - 如何使用copy_if从2d vector 中复制特定项目

c++ - 指针和双向链表

c - 如何在 Visual C++ Express 中运行 .lib 项目中的单个 .c 文件?

c++ - 如何找到我的 C++ 应用程序正在使用的 header ?

android - Qt 5.7 for Android 主 C++ 线程不连续运行

c++ - 求大 n 和 k 模 m 的二项式系数

c++ - 在 VS2010 中使用 list_of 调用不明确

c# - 编译器可以在变量实际启动之前为变量赋值吗?