题
我在c#中为我的DirectX 3D引擎工作了数学库。我正在使用Slimdx,这是一个很好的放在一起和强大的图书馆。Slimdx提供了相当几个数学类,但它们实际上是attication d3dx对象的包装器,因此当对象本身非常非常快,互操作不是我的概念,因为我的托管c#代码胜过它们。
我的具体问题与浮点比较有关。规范的方式是定义epsilon值,并将值与浮点值之间的差值进行比较以确定近距离,如下所示:
float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
return Math.Abs(a - b) < Epsilon
}
.
函数调用开销会扫描实际比较,所以这个微不足道的函数将在C ++中加入,C#编译器会这样做吗?有没有办法告诉C#编译器我希望方法内联?
解决方案
c#编译器不会执行内联 - 但在这种情况下,JIT可能会很好地执行。这肯定是 执行内嵌的作品,如果有的话。
编辑:我会在这种情况下inline 预期它,但很难在不将代码加载到像CORDBG相同的东西中打开的东西。每个不同的CLR版本可能会对其内联(包括64位VS 32位CLRS)不同的调整,因此我不愿意说出任何太定的东西。
其他提示
这是一些关于JIT不会执行内嵌的情况的信息;
http://blogs.msdn.com/b/davidnotario/archive/2004/11/01/250398.aspx
不隶属于 StackOverflow