문제

C #에서 DirectX 3D 엔진을위한 수학 라이브러리에서 일하고 있습니다.나는 멋지고 강력한 도서관 인 slimdx를 사용하고 있습니다.SLIMDX는 꽤 많은 수학 수업을 제공하지만 실제로 네이티브 D3DX 객체 주위에 래퍼이므로 객체 자체가 매우 빠르지 만, 관리되는 C # 코드가 능력을 능가하기 때문에 interop은 내가 추정하지 않습니다.

내 특정 질문은 부동 소수점 비교와 관련이 있습니다.정렬 방법은 EPSILON 값을 정의하고 부동 소수점 값의 차이와 값을 비교하여 다음과 같은 친밀감을 결정합니다.

float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
  return Math.Abs(a - b) < Epsilon
}
.

함수 호출 오버 헤드는 실제 비교를 습관으로 습관화 하므로이 사소한 함수는 C ++에서 인라인 될 것이고 C # 컴파일러 가이 작업을 수행합니까?C # 컴파일러에 인라인 한 방법을 원한다고 말하는 방법이 있습니까?

도움이 되었습니까?

해결책

C # 컴파일러는 인라인을 수행하지 않습니다. 그러나이 경우에는 JIT가 그렇게 할 수 있습니다.확실히 에있는 을 수행하는 조각입니다.

편집 :이 경우에 이 기대할 것입니다. 그러나 jit optimizations가 켜져있는 CordBG와 같은 것으로 코드를로드하지 않고도 코드를로드하는 것이 어렵습니다.각각 다른 CLR 버전은 인라이닝 (64 비트 대 32 비트 CLRS 포함)에 맞게 다른 조정을 가질 수 있으므로 너무 일정한 것을 말하기를 꺼립니다.

다른 팁

JIT가 인라인을 수행하지 않는 상황에 대한 몇 가지 정보가 있습니다.

http://blogs.msdn.com./ v/davidnotario/archive/2004/11/01/250398.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top