亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

虛函數和性能 - C ++

虛函數和性能 - C ++

C++
呼喚遠方 2019-09-19 09:43:30
在我的類設計中,我廣泛使用抽象類和虛函數。我感覺虛擬功能會影響性能。這是真的?但我認為這種性能差異并不明顯,看起來我正在做過早的優化。對?
查看完整描述

3 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

一個好的經驗法則是:


在你證明這一點之前,這不是一個性能問題。


虛函數的使用對性能影響很小,但不太可能影響應用程序的整體性能。尋找性能改進的更好地方是算法和I / O.


一篇關于虛函數(以及更多)的優秀文章是成員函數指針和最快可能的C ++代表。


查看完整回答
反對 回復 2019-09-19
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

在性能非常關鍵的應用程序(如視頻游戲)中,虛擬函數調用可能太慢。使用現代硬件,最大的性能問題是緩存未命中。如果數據不在緩存中,則在可用之前可能需要數百個周期。

當CPU獲取新函數的第一條指令并且它不在緩存中時,正常函數調用可以生成指令緩存未命中。

虛函數調用首先需要從對象加載vtable指針。這可能導致數據緩存未命中。然后它從vtable加載函數指針,這可能導致另一個數據緩存未命中。然后它調用可能導致指令高速緩存未命中的函數,如非虛函數。

在許多情況下,兩個額外的緩存未命中并不是一個問題,但在性能關鍵代碼的緊密循環中,它可以大大降低性能。


查看完整回答
反對 回復 2019-09-19
  • 3 回答
  • 0 關注
  • 658 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號