c++ - 剖析 C++ 代码编译速度

标签 c++ compilation profiling

如果 C++ 项目的物理结构有利于编译速度,您将如何获得某种客观的衡量标准?有些人说你应该避免使用模板以获得更好的编译速度,但是如果模板生成大量非冗余目标代码,即使行/秒编译速度不是很好,那也不是很糟糕。因此,您无法真正检查两个项目之间的线数/秒来了解结构是否良好,而且许多其他因素无论如何都可能扭曲结果。

每秒生成的目标代码量是否是一个很好的衡量标准(显然是在同一平台和编译器上)?或者有一些代码分析工具吗?对物理结构进行某种客观测量以了解是否有改进空间会很有趣。例如。如果您应该尝试进一步优化头文件依赖性或将更多代码分组到 cpp 文件(ala unity 构建),请将更多内容从头文件移动到 cpp 等。

最佳答案

我会考虑计算实例化。有一个用于 boost 的模板分析器工具可以执行此操作:

https://svn.boost.org/svn/boost/sandbox/tools/profile_templates/

如果您使用的是 visual studio 2010 或更高版本,那么您可以使用名为 Meta 的扩展,它可以处理调用 boost 分析器工具的一些复杂性。

这是 visual studio 2010 扩展的链接。 http://visualstudiogallery.msdn.microsoft.com/325d7305-2787-4b1d-9ac7-743e3d767531

这里是 vs 2013 版本的源代码: https://github.com/brandon-kohn/Meta

关于c++ - 剖析 C++ 代码编译速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24470620/

相关文章:

C++ 将位图从资源添加到图片控件

gcc - 奇怪的编译错误

python - 分析 python 脚本

C# ASP.NET VS 2010 专业分析器

c++ - 如何在 C++ 中对某些数据结构进行父类(super class)化?

c++ - 在C++ 11中对变量名进行字符串化的替代方法

c++ - 如何在不增加 sizeof 的情况下将 bool 添加到结构中(如果结构中有填充)?

c - 在 gcc 中编译时关于警告输出的最佳实践?

java - Clojure Leiningen 多个项目编译错误 - ClassNotFoundException

caching - 如何确保代码运行时不会因缓存而导致执行时间发生变化?