猿问
虚函数和性能 - C ++
在我的类设计中,我广泛使用抽象类和虚函数。我感觉虚拟功能会影响性能。这是真的?但我认为这种性能差异并不明显,看起来我正在做过早的优化。对?
呼唤远方
浏览 600
回答 3
3回答
慕沐林林
一个好的经验法则是:在你证明这一点之前,这不是一个性能问题。虚函数的使用对性能影响很小,但不太可能影响应用程序的整体性能。寻找性能改进的更好地方是算法和I / O.一篇关于虚函数(以及更多)的优秀文章是成员函数指针和最快可能的C ++代表。
0
0
0
肥皂起泡泡
在性能非常关键的应用程序(如视频游戏)中,虚拟函数调用可能太慢。使用现代硬件,最大的性能问题是缓存未命中。如果数据不在缓存中,则在可用之前可能需要数百个周期。当CPU获取新函数的第一条指令并且它不在缓存中时,正常函数调用可以生成指令缓存未命中。虚函数调用首先需要从对象加载vtable指针。这可能导致数据缓存未命中。然后它从vtable加载函数指针,这可能导致另一个数据缓存未命中。然后它调用可能导致指令高速缓存未命中的函数,如非虚函数。在许多情况下,两个额外的缓存未命中并不是一个问题,但在性能关键代码的紧密循环中,它可以大大降低性能。
0
0
0
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
我要回答