我在程序的每個方法中都使用了內聯(算法的實現),它會產生問題嗎?在方法定義中使用inline關鍵字可能會導致ptoblems?
-3
A
回答
4
取決於你的代碼是什麼樣的。
但是不理解你的代碼是什麼意思?那是肯定會導致你的問題。
爲什麼你不試圖去了解什麼inline
實際上確實,而不僅僅是它是否會導致任何問題?
C++中inline
關鍵字的主要作用是使編譯器抑制ODR(一個定義規則)。所以一個非inline
函數必須完全定義爲一個翻譯單元。
一個inline
功能必須在每個使用它的翻譯中定義。
因此,根據您的功能定義的方式和位置,inline
可能是或不可能是正確。我建議你在使用正確的地方使用它。
-1
假設編譯器不夠聰明以至於忽略它,它可能會使編譯輸出變大並運行得更慢。一般來說,如果你有一個特定的目的,你應該只使用像'register'或'inline'這樣的優化關鍵字 - 一種你知道編譯器不知道的有用東西的情況。
在現代CPU上,內聯通常是一種悲觀而非優化。這是因爲函數的每個副本都必須從內存中獲取,解碼其指令,並在各種高速緩存中佔用自己的空間 - 特別是分支預測高速緩存。
相關問題
- 1. inline關鍵字導致鏈接器錯誤2019在Visual C++
- 2. 導軌關聯會導致未定義的方法錯誤
- 3. 在自定義方法中使用jQuery'this'關鍵字
- 4. C++ 14在方法的定義中使用auto關鍵字
- 5. Tab鍵實地會導致「未定義」
- 6. 移動到一個方法會導致`未定義的方法`
- 7. 什麼可能導致JavaScript「新」關鍵字失敗?
- 8. C++內聯類方法會導致未定義的引用
- 9. 重新定義可能會調用舊方法的PHP方法
- 10. $ getRecord不會導致$存儲方法在Angular Fire中可用
- 11. out關鍵字不能在C#中的方法中使用方法
- 12. 什麼可能會導致已被定義爲無法調用的js函數
- 13. 「使用」關鍵字可能會繼承較少的功能嗎?
- 14. 在Python中,能否使用currentThread()作爲關鍵字導致內存泄漏?
- 15. 可能會導致XP sysprep?
- 16. 定義靜態列表可能會導致內存泄漏?
- 17. Rspec POST導致未定義的方法`鍵?' for:create:Symbol
- 18. 使用非主鍵UUID類型字段findBy *方法導致
- 19. 在函數中使用fetch()會導致「輸出未定義」
- 20. 包裝的方法導致未定義
- 21. 導致未定義的JavaScript split()方法
- 22. 在用戶定義的類中使用C#使用關鍵字
- 23. 使用第三方關鍵幀定義
- 24. Drools更新方法可能會導致我的問題
- 25. 在打字稿中定義不使用class關鍵字的類
- 26. 在ANTLR語法中使用不同的關鍵字關鍵字
- 27. 只使用關鍵部分的讀/寫鎖會導致死鎖
- 28. 可以在定義和聲明中指定extern關鍵字
- 29. C#方法,使用params關鍵字
- 30. 是否使用動態關鍵字導致泛型類型導致裝箱?
-1,內聯函數使分支預測和緩存效率更高,因爲函數位於調用的地方,而不是代碼段中的其他地方。跳躍的地方是導致緩存未命中的原因。 – pezcode
@pezcode:咦?如何跳轉產生緩存未命中?跳躍是100%可預測的。如果這個函數最近被其他地方調用,它在緩存中將會很熱。 –