[英]c++ virtual function performance
我有兩個類foo
和bar
,其中一個是另一個的超類,並且它們都有一個方法hello_world
。
class foo {
virtual void hello_world();
};
class bar : public foo {
void hello_world();
};
我的問題是:如果將它虛擬hello_world
bar
的hello_world
性能會有什么不同嗎? 它將變成這樣:
class foo {
virtual void hello_world();
};
class bar : public foo {
virtual void hello_world();
};
我主要從bar
呼叫hello_world
。 我知道虛函數會使函數變慢,因為我們需要運行時查找。 但是對於這種情況,有什么區別嗎?
與具有可以內聯的相同邏輯的函數相比,在類可能確實是多態的上下文中調用虛擬函數始終會對性能產生影響。 主要原因是調用函數的開銷很小,查找需要調用的函數的開銷很小,並且優化機會也大大減少了。 最后一點通常是最昂貴的。
原始示例未編譯,即,很明顯,尚未進行任何性能分析。 一旦測量到代碼運行太慢並且特定的調用確實在性能問題產生的區域,就不必擔心性能影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.