質問

C#の私のDirectX 3Dエンジンの数学ライブラリに取り組んでいます。私はSlimdxを使っています、それは一緒になって強力なライブラリです。SLIMDXはかなりの数学のクラスを提供しますが、実際にはネイティブのD3DXオブジェクトの周囲にラッパーを取ります。

私の特定の質問は浮動小数点比較を行う必要があります。標準的な方法は、ε値を定義し、その値を浮動小数点値の差に比較して、そのような

を比較することです。
float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
  return Math.Abs(a - b) < Epsilon
}
.

関数呼び出しオーバーヘッドは実際の比較を衰退させるので、この些細な機能はC ++でインライン化され、C#コンパイラはこれを行いますか?メソッドをインライン化させたいと思うC#コンパイラに言う方法はありますか?

役に立ちましたか?

解決

C#コンパイラはインライン化を実行しません - しかしJITはこの場合、そうする可能性があります。それは確かにがインライン化しています。

編集:この場合、をインラインに期待していますが、JITの最適化がオンになっているCordBGのようなコードをロードせずに言うのは難しいです。それぞれの異なるCLRバージョンは、そのインライン化(64ビット対32ビットCLRを含む)に異なる調整をもたらす可能性があるので、あまりにも明確なものを言うことに消極的です。

他のヒント

JITがインライン化しない状況についてのいくつかの情報です。

http://blogs.msn.com/b/davidnotario/archive / 2004/01/01/250398.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top