C 中的虛擬函數和效能
在類別設計中使用抽象類別和虛擬函數引起了人們對潛在效能影響的擔憂。人們普遍認為虛擬函數會影響效能。然而,這種影響的程度仍有爭議。
實務上的效能影響
為了評估虛擬功能的效能影響,進行了基準測試3GHz PowerPC CPU。創建了一個帶有 getter 和 setter 的簡單 4D 向量類別。
測試涉及 1024 個向量的數組,每個向量與另一個向量相加 1000 次。這些函數被定義為內聯函數、虛擬函數和常規函數呼叫。
基準測試結果
結果顯示執行時間有顯著差異:
分析與結論
測試證實虛擬函數會造成效能損失,大約比內聯呼叫慢20 倍。然而,這種開銷在大多數實際場景中是微不足道的。
考慮到每次循環迭代調用 12,288 次函數調用,每次虛擬函數調用的額外成本僅為 7 奈秒。這表明,除非應用程式每秒需要數百萬次虛擬函數調用,否則對效能的影響應該可以忽略不計。
建議
雖然虛擬函數可能會帶來輕微的效能影響開銷,優先考慮過早優化至關重要。在大多數實際應用程式中,使用抽象類別和虛擬函數的好處超過了潛在的效能影響。因此,一般建議根據需要使用虛擬函數,而不必過度擔心效能影響。
以上是C 中的虛擬函數對效能有顯著影響嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!