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/