pimpl(也称为:编译器防火墙)惯用语用于缩短编译时间,但会降低可读性和运行时性能。目前,一个项目需要很长时间才能完成编译,如何衡量最佳的Pimpl候选者?

我有使用pimpl的经验,将项目的编译时间从两小时缩短到十分钟,但是我只是按照自己的直觉这样做:我推断出包含(1)许多源代码(2)复杂的类头文件/template类,是使用pimple习语的最佳人选。

有没有一种工具可以客观地指出哪些类(class)是优秀的皮普顿候选人?

最佳答案

Pimpl对于增量编译很有用。

但是使用Pimpl的主要原因是保持ABI兼容性。在我过去的公司中,这是API中几乎所有公共(public)类的规则。

另一个优点是,您还可以将库作为包含不公开实现详细信息的 header 的软件包分发。

为此,我将说:尽可能使用Pimpl。

Qt Pimpl实现细节和好处的一篇很好的文章:https://wiki.qt.io/D-Pointer

编译时问题必须通过以下方式解决:

  • 使用预编译头
  • 通过代码触摸频率将您的大项目分成小项目。经常更改的部分可以在库中编译,然后在本地存储库中发布,其他项目按版本引用。
  • ...
  • 关于c++ - 如何衡量皮蓬候选人?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35669863/

    10-11 11:05