ライブラリと、OpenTK
MonoTouch および MonoDroid には、(遅いと思われる) をLengthFast
使用せずにベクトルの長さの概算を計算するメソッド が含まれています。を使用します。これは、平方根の高速近似を提供する非常に興味深い方法です ( http://www.opentk.com/files/doc/_math_helper_8cs_source.htmlの 172 行目と 196 行目を参照)。Math.Sqrt
LengthFast
MathHelper.InverseSqrtFast
100'000'000
ベクトルの長さが約 1 ~ 100 の、両方の計算時間を呼び出す小さなベンチマークを作成しました。
Windows 7 / Intel i7-2600 3.40 GHz では、次のようになりました。
Length
:2947 ms
LengthFast
:4754 ms
MonoTouch を搭載した iPad 3 では、次の結果が得られました。
Length
:51575 ms
LengthFast
:41252 ms
そのためLengthFast
、Intel CPU でははるかに遅く、iPad の ARM ではわずかに高速です。
これについての説明はありますか?それは、Intel CPU が「ネイティブに」(ソフトウェア近似を使用せずに) 平方根を計算できる結果ですか? LengthFast
少なくとも少しは、常に高速であるべきではありませんか?