Estoy trabajando en una biblioteca matemática para mi motor DirectX 3D en C#. Estoy usando SlimDX, que es una maravillosa y potente biblioteca. SlimDX proporciona bastantes clases de matemática, pero en realidad son envoltorios alrededor de objetos D3DX nativos, así que aunque los objetos mismos son muy, muy rápidos, la interoperabilidad no es, supongo, porque mi código C# administrado los supera.Expansión en línea en C#
Mi pregunta específica tiene que ver con la comparación de coma flotante. La clase-de forma canónica es definir un valor de épsilon, y comparar el valor de la diferencia entre los valores de punto flotante para determinar la cercanía, así:
float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
return Math.Abs(a - b) < Epsilon
}
la función de llamada sobrecarga inundaría la comparación real, entonces esta función trivial estaría en línea en C++, ¿lo hará el compilador C#? ¿Hay alguna manera de decirle al compilador de C# que quiero un método en línea?
El JIT puede ser bastante inteligente sobre procesos en línea, cuando se ejecuta fuera del depurador. Puede en línea el método 'Math.Abs', por ejemplo. –
Ahora la pregunta es: ¿LO HARÁ en este caso (suponiendo que hay un código optimizado y sin depurador)? – Mau
@Mau: Edición ... –