我在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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top