【发布时间】:2014-06-28 20:21:18
【问题描述】:
如果 C++ 项目的物理结构有利于编译速度,您将如何获得某种客观的测量结果?有人说您应该避免使用模板以获得更好的编译速度,但是如果模板生成大量非冗余目标代码,即使行/秒编译速度不是很好,那也不是很糟糕。因此,您无法真正检查两个项目之间的行数/秒,以了解结构是否良好,再加上许多其他因素可能会扭曲结果。
每秒生成的目标代码量是否是一个很好的衡量标准(显然在相同的平台和编译器上)?或者有一些代码分析工具吗?对物理结构进行某种客观测量以了解是否有改进的余地会很有趣。例如。如果您应该尝试进一步优化头文件依赖关系或将更多代码分组到 cpp 文件(ala unity builds),将更多内容从头文件移动到 cpp 等。
【问题讨论】:
-
我本能地认为这个问题因其广泛性而脱离主题,因此可能会被关闭,但这是一个非常好的问题。
-
我认为如果没有真正的测试,您将无法获得任何见解。对其进行基准测试,这可能会有所帮助:stackoverflow.com/questions/2542273/…
-
@usr1234567 仅进行基准测试是不够的,因为您必须能够以某种方式与其他项目进行比较,您的项目是如何执行的。很好的链接,但可以在不同阶段获得编译性能的细分。
-
不幸的是,事情没有那么简单。当编译和链接时间减少时,它可以节省程序员的时间。这实际上不是使用模板的问题。更重要的是了解是否需要改进以缩短编译时间。
-
@WarrenDew 是的,它并不完美。也许我可以通过检查目标代码中的重复序列以使结果产生偏差(只是头脑风暴)的东西来运行生成的目标代码。实际上,像 zip 中使用的一些熵编码器可以做到这一点
标签: c++ compilation profiling