Je travaille sur une bibliothèque mathématique pour mon moteur 3D DirectX en C#. J'utilise SlimDX, qui est une bibliothèque merveilleusement mise en place et puissante. SlimDX fournit pas mal de classes de maths, mais elles sont en fait des wrappers autour d'objets D3DX natifs, donc si les objets eux-mêmes sont très, très rapides, l'interop n'est pas supposé, car mon code C# géré les surpasse.Extension en ligne en C#
Ma question spécifique concerne la comparaison à virgule flottante. Le tri de manière canonique est de définir une valeur epsilon et comparer la valeur à la différence entre les valeurs à virgule flottante pour déterminer la proximité, comme ceci:
float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
return Math.Abs(a - b) < Epsilon
}
La fonction surcharge d'appel inonderaient la comparaison réelle, donc cette fonction triviale serait inline en C++, le compilateur C# fera-t-il cela? Est-il un moyen de dire au compilateur C# que je veux une méthode inline?
Le JIT peut être assez intelligent sur inline, lorsqu'il est exécuté en dehors du débogueur. Il peut par exemple intégrer la méthode 'Math.Abs'. –
Maintenant, la question est: va-t-il dans ce cas (en supposant un code optimisé et pas de débogueur)? – Mau
@Mau: Modification ... –