C中的靜態函數可能會更快,因爲編譯器的優化器可以看到所有的調用站點,因此可以優化被調用函數的epilog和序言?靜態函數更快?
靜態函數更快?
回答
它理論上可以。然而,同時一些現代編譯器可以執行所謂的「全局優化」,其基於分析跨翻譯單元的代碼之間的關係。這可以包括分析整個程序中給定函數的所有調用站點(而不是單個翻譯單元),並可能將這種優化擴展到非靜態函數。
它可以使編譯器更願意內聯,是的。但是,一如既往,這取決於編譯器。您必須測試並檢查輸出組件以確保。
如果您的函數是在與定義的函數相同的翻譯單元中調用的(顯然需要使用static
函數),編譯器可以輕鬆地內聯此類調用,而不管函數是否聲明爲static
。
一些質量編譯器也將執行整個程序優化,因此即使對不同翻譯單元中的函數調用也可能發生內聯和其他優化。
是的!你能說'LLVM'嗎?在編程實踐中看起來像絕對的東西往往是曇花一現。 – 2010-02-12 15:41:59
@Tim:+1 <3 LLVM(和其他動態編譯系統)。但是,嚴重的是,甚至更高端的Visual C++版本也會爲你完成整個程序的優化。 – 2010-02-12 15:44:07
貧窮的海灣合作委員會還不能做:(但我聽到工作正在進行中,以添加它。 – 2010-02-12 15:57:15
- 1. 靜態函數導致更多的靜態函數
- 2. 靜態函數靜態函數
- 3. C++更快?靜態成員函數還是普通的?
- 4. 靜態函數
- 5. 靜態函數
- 6. 在C++中更新靜態函數中的非靜態成員
- 7. Integer.valueOf()靜態函數
- 8. DLL靜態函數
- 9. php靜態函數
- 10. 靜態函數swift
- 11. Java靜態函數
- 12. 靜態函數和非靜態變量
- 13. 靜態函數中的靜態變量?
- 14. 快速的問題:可以非靜態函數修改靜態變量在C++
- 15. 快速靜態文件沒有更新
- 16. 如何更改快速靜態目錄?
- 17. 如何從另一個靜態函數調用靜態函數
- 18. 從靜態函數調用非靜態函數
- 19. 靜態函數常量靜態成員函數
- 20. 靜態函數調用非靜態函數在C++
- 21. 如何使用非靜態函數內部靜態函數
- 22. 什麼是函數中更快的傳遞對象或靜態調用它
- 23. 有關C++中的靜態函數的快速提問
- 24. 靜態函數VS const函數
- 25. 構造函數和靜態函數
- 26. 函子到靜態成員函數和靜態成員函數的類型
- 27. Java:重寫靜態函數
- 28. QThreadPool&QRunnable&靜態函數
- 29. 「......」一個C靜態函數
- 30. 靜態析構函數
這個問題實際上是一個合法的點評分問題,並使其成爲社區wiki會阻止合法答案。 :-)(即我認爲人們不願意回答「真正」的問題,如果它不會幫助他們獲得代表)。 – 2010-02-12 15:38:51
@Chris:我希望我知道這一點。我現在可以改變它嗎? – Mike 2010-02-12 15:50:46
不,一旦帖子變成CW,就沒有辦法通過設計來解除它。請參閱:http://meta.stackexchange.com/questions/11740/what-are-community-wiki-posts-on-stack-overflow – 2010-02-12 15:54:09