인라인으로 표시된 매우 작은 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