我正在爲C#中的DirectX 3D引擎開發數學庫。我正在使用SlimDX,這是一個非常有用的強大的庫。 SlimDX提供了相當多的數學類,但它們實際上是圍繞本機D3DX對象的包裝器,所以雖然對象本身非常快,但互操作並不是我想的,因爲我的託管C#代碼勝過它們。C中的內聯擴展#
我的具體問題與浮點比較有關。該整理的典型方式是定義的ε值,和值比較的差異浮點值之間確定親近,就像這樣:
float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
return Math.Abs(a - b) < Epsilon
}
函數調用的開銷將淹沒實際比較,所以這個簡單的函數會在C++中內聯,C#編譯器會這樣做嗎?有沒有辦法告訴C#編譯器我想要一個內聯的方法?
的JIT可以相當聰明約內聯,當調試器外運行。例如,它可以內聯「Math.Abs」方法本身。 – 2010-07-13 11:16:45
現在的問題是:在這種情況下(假設優化代碼和沒有調試器),它會嗎? – Mau 2010-07-13 11:17:38
@Mau:編輯... – 2010-07-13 11:24:02