3 回答
TA貢獻1875條經驗 獲得超5個贊
最后在.NET 4.5中,CLR允許使用值提示/建議1方法內聯MethodImplOptions.AggressiveInlining。它也可以在Mono的后備箱中使用(今天提交)。
// The full attribute usage is in mscorlib.dll,
// so should not need to include extra references
using System.Runtime.CompilerServices;
...
[MethodImpl(MethodImplOptions.AggressiveInlining)]
void MyMethod(...)
1。此前使用的是“force”。由于有一些downvotes,我會試著澄清這個詞。正如在評論和文檔中一樣,The method should be inlined if possible.特別是考慮到Mono(開放),考慮內聯或更一般的(如虛函數),存在一些單特定的技術限制。總的來說,是的,這是對編譯器的暗示,但我想這就是要求的。
TA貢獻1807條經驗 獲得超9個贊
內聯方法只是一種編譯器優化,其中函數的代碼被卷入調用者。
在C#中沒有任何機制可以做到這一點,并且它們在支持它們的語言中被謹慎使用 - 如果你不知道為什么它們應該被用在某個地方,它們就不應該被使用。
編輯:為了澄清,有兩個主要原因需要謹慎使用:
在沒有必要的情況下,通過內聯使用大量二進制文件很容易
從性能的角度來看,編譯器往往比你應該知道更好
最好不要管它,讓編譯器完成它的工作,然后分析并確定內聯是否是最適合你的解決方案。當然,有些事情是有意義的內聯(特別是數學運算符),但讓編譯器處理它通常是最好的做法。
- 3 回答
- 0 關注
- 1706 瀏覽
添加回答
舉報
