C++ Pimpl与纯虚拟接口性能

bit*_*ise 3 c++ performance virtual-functions cross-platform pimpl-idiom

我知道有很多关于这个主题的帖子,但我很难找到这个问题的答案.

对于更快的函数调用,纯虚拟接口还是pimpl?

乍一看,在我看来,纯虚拟接口会更快,因为使用pimpl会花费两个函数调用而不是一个......或者在这种情况下某些聪明的编译器技巧会接管吗?

编辑:我正在尝试决定我应该使用哪些来抽象出几个对象的系统相关部分,这些部分可能最终必须经常产生,而且数量很多.

编辑:
我想在这一点上值得一提,我的问题的根源在于我错误地将抽象工厂设计模式误认为是使我的代码在多个平台上工作的方法,当它的真正目的是切换给定接口的实现时在运行时.

Dav*_*eas 5

这两个选项不相同,因为焦点不同,所以不应该对性能进行比较.即使它们是等价的,在大多数情况下,性能差异也很小,并不重要.如果您在极少数情况下知道调度是一个问题,那么您可以使用工具来衡量差异.

  • +1,这是supermegaprematureoptimisation (7认同)