首页 > 后端开发 > C++ > C 中的虚拟函数对性能有显着影响吗?

C 中的虚拟函数对性能有显着影响吗?

Susan Sarandon
发布: 2024-11-25 03:26:09
原创
334 人浏览过

Do Virtual Functions in C   Significantly Impact Performance?

C 中的虚拟函数和性能

在类设计中使用抽象类和虚拟函数引起了人们对潜在性能影响的担忧。人们普遍认为虚拟函数会影响性能。然而,这种影响的程度仍然存在争议。

实践中的性能影响

为了评估虚拟功能的性能影响,进行了基准测试3GHz PowerPC CPU。创建了一个带有 getter 和 setter 的简单 4D 向量类。

测试涉及 1024 个向量的数组,每个向量与另一个向量相加 1000 次。这些函数被定义为内联函数、虚拟函数和常规函数调用。

基准测试结果

结果显示执行时间存在显着差异:

  • 内联:8ms(每次调用 0.65ns)
  • 直接:68ms (每次调用 5.53ns)
  • 虚拟:160ms(每次调用 13ns)

分析与结论

测试证实虚拟函数会造成性能损失,大约比内联调用慢 20 倍。然而,这种开销在大多数实际场景中是微不足道的。

考虑到每次循环迭代调用 12,288 次函数调用,每次虚拟函数调用的额外成本仅为 7 纳秒。这表明,除非应用程序每秒需要数百万次虚拟函数调用,否则对性能的影响应该可以忽略不计。

建议

虽然虚拟函数可能会带来轻微的性能影响开销,优先考虑过早优化至关重要。在大多数实际应用程序中,使用抽象类和虚拟函数的好处超过了潜在的性能影响。因此,一般建议根据需要使用虚函数,而不必过度担心性能影响。

以上是C 中的虚拟函数对性能有显着影响吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板