どのような数学の方法は、.NETでのFPUハードウェアに実装されていますか?
質問
.NET用プロセッサのハードウェアによってimplemntedされているものを数学方法誰もが知っていますか?例えば、私は、ATANの使用の多くを作るのアルゴリズムを持っています。私は簡単にこれのためのルックアップテーブルを作成することができますが、math.netは、FPUやその他のハードウェア拡張を使用して、これを実装する場合、価値があることを行っていない。
解決
の方法は、ハードウェアのx87命令を使用して実装されているかどうかは、問題ではありません。
"インテル64およびIA-32アーキテクチャー最適化リファレンス・マニュアル"(/ <ここをダウンロードA>)最近のハードウェア上で150-300サイクルのレイテンシーを持つものとしてfpatan
を示しています。よく書かれたソフトウェア実装では、実質的に少ない時間でフル精度倍精度の結果を提供することができます - 確かに、高品質の数学ライブラリはちょうどそれを
他のヒント
なぜだけではなく、ベンチマーク.NETで提供さATAN()に対するあなたのルックアップテーブルアプローチを。そして、あなたは明確にルックアップテーブルを用いて速度差のどのくらいを伝えることができるでしょう本当になります。
それを武器に、あなたは基礎となるVMは、最速の方法を識別するために物事を行う方法を知っておく必要はありません。あなたも、高速化を定量化することができるでしょう。
このブログによると、MicrosoftのJITコンパイラ のx86プラットフォーム上でFPU命令を活用ん:
http://blogs.msdn.com/davidnotario /archive/2004/10/26/247792.aspxする
FPUは現在、10年以上のx86 CPU上で標準となっているからです。このことは、行うにはかなり基本的なことです
小さなベンチマークアプリケーションでは、それがFPUを使用した場合でも、Math.Atan2のパフォーマンスは、代替approximisation機能ほど良好ではないことが表示されます。
おおよそのバージョンは5.5秒を取っている間、私の簡単なベンチマークでは、Math.Atan2ループは、8秒を取ってます。