我有一個非常小的C#代碼標記爲內聯,但不工作。 我已經看到最長的函數會產生超過32個字節的IL代碼。 32字節的限制是否太短?內聯函數的32字節限制...不能太小?
// inlined
[MethodImpl(MethodImplOptions.AggressiveInlining)]
static public bool INL_IsInRange (this byte pValue, byte pMin) {
return(pValue>=pMin);
}
// NOT inlined
[MethodImpl(MethodImplOptions.AggressiveInlining)]
static public bool INL_IsInRange (this byte pValue, byte pMin, byte pMax) {
return(pValue>=pMin&&pValue<=pMax);
}
是否可以改變這個限制?
「不工作」不是很有幫助。請提供詳細信息。如果有例外,請提供例外詳情。 – DeanOC
@DeanOC:根據問題的標題和內容,我認爲問題在於函數未內聯。 –
我的意思是它不作爲內聯函數運行,第一個函數使用內聯代碼運行,但第二個函數使用內聯代碼運行。我認爲這是一個關於JIT作爲限制啓發函數的32字節限制的問題,它決定了是否將它放在內聯中。我是對的?這是功能問題? – jmmcba