【发布时间】:2012-05-09 19:22:36
【问题描述】:
我知道有很多关于这个主题的帖子,但我很难找到这个确切问题的答案。
对于函数调用,哪个更快,是纯虚拟接口还是pimpl?
乍一看,在我看来,纯虚拟接口会更快,因为使用 pimpl 将花费两个函数调用而不是一个......或者在这种情况下某种聪明的编译器技巧会接管?
编辑: 我正在尝试决定我应该使用其中哪些来抽象出一些对象的系统相关部分,这些对象可能最终不得不非常频繁地大量生成。
编辑:
我想在这一点上值得一说,我的问题的根源是我误认为抽象工厂设计模式是一种让我的代码在多个平台上工作的方法,而它的真正目的是在 运行时。
【问题讨论】:
-
使用pimpl时,公共接口的方法可以内联,所以性能差异几乎没有。
-
系统任务的成本会很高,因此函数调用本身的成本将是不可估量的(除非你能证明它不是)。因此,您不应将此作为您的决策标准。选择一种使编写代码最容易和最简单的方法。
标签: c++ performance cross-platform virtual-functions pimpl-idiom