ric*_*eek 6 c++ profiler pimpl-idiom
pimpl(也称为编译器防火墙)习惯用于缩短编译时间,但代价是可读性和一点运行时性能.目前一个项目需要很长时间才能编译,如何衡量最佳的pimpl候选人?
我有使用pimpl的经验,将项目的编译时间从两小时缩短到十分钟,但我只是按照我的直觉做了这个:我推断出类头文件包括(1)很多源代码(2)复杂/模板类,是使用疙瘩成语的最佳人选.
是否有一个工具可以客观地指出哪些类是优秀的pimpl候选人?
小智 0
确实,Pimpl 对于增量编译很有用。
但使用 Pimpl 的主要原因是保持 ABI 兼容性。这是我以前的公司对 API 中几乎所有公共类的规则。
其他优点是您还可以将库作为包含不公开实现细节的标头的包进行分发。
为此我会说:尽可能使用 Pimpl。
一篇非常好的文章,介绍了 Qt Pimpl 实现细节和优点: https: //wiki.qt.io/D-Pointer
编译时问题必须通过以下方式解决: