3 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
最后在.NET 4.5中,CLR允許使用值提示/建議1方法內(nèi)聯(lián)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,我會(huì)試著澄清這個(gè)詞。正如在評(píng)論和文檔中一樣,The method should be inlined if possible.特別是考慮到Mono(開(kāi)放),考慮內(nèi)聯(lián)或更一般的(如虛函數(shù)),存在一些單特定的技術(shù)限制。總的來(lái)說(shuō),是的,這是對(duì)編譯器的暗示,但我想這就是要求的。

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
內(nèi)聯(lián)方法只是一種編譯器優(yōu)化,其中函數(shù)的代碼被卷入調(diào)用者。
在C#中沒(méi)有任何機(jī)制可以做到這一點(diǎn),并且它們?cè)谥С炙鼈兊恼Z(yǔ)言中被謹(jǐn)慎使用 - 如果你不知道為什么它們應(yīng)該被用在某個(gè)地方,它們就不應(yīng)該被使用。
編輯:為了澄清,有兩個(gè)主要原因需要謹(jǐn)慎使用:
在沒(méi)有必要的情況下,通過(guò)內(nèi)聯(lián)使用大量二進(jìn)制文件很容易
從性能的角度來(lái)看,編譯器往往比你應(yīng)該知道更好
最好不要管它,讓編譯器完成它的工作,然后分析并確定內(nèi)聯(lián)是否是最適合你的解決方案。當(dāng)然,有些事情是有意義的內(nèi)聯(lián)(特別是數(shù)學(xué)運(yùn)算符),但讓編譯器處理它通常是最好的做法。
- 3 回答
- 0 關(guān)注
- 1684 瀏覽
添加回答
舉報(bào)