C 中虚拟函数的性能影响
您表达了对类设计中虚拟函数性能影响的担忧。这是一个合理的担忧,还是可以被视为过早优化?
为了解决您的问题,我们在 3GHz PowerPC CPU 上进行了性能测试。我们创建了一个带有 get/set 函数的简单 4D 矢量类。我们使用定义为内联、虚拟和常规函数调用的函数进行测试。
以下是结果:
在这种情况下,数据适合 L1 缓存,虚拟函数调用为比内联调用慢大约 20 倍。然而,考虑这种性能差异的背景至关重要。
测试循环的每次迭代都涉及 12,288 次函数调用。因此,虚拟循环比直接循环花费了 92 毫秒,导致每次函数调用仅额外增加 7 纳秒的开销。
根据这些结果,我们得出结论:
在大多数情况下,除非针对极端性能进行优化,否则与使用虚拟函数进行封装和灵活性相关的权衡超过了任何潜在的性能问题。
以上是C 中的虚拟函数是性能瓶颈吗?的详细内容。更多信息请关注PHP中文网其他相关文章!