の場合、浮動小数点除算とチェック値の効率が良いです。の場合、正しい結果を得るために値に乗数を適用する必要があります。これは、浮動小数点除算を使用して値を計算することを含む。eq
プロセッサ時間を節約するために浮動小数点ロジックを実行する前に値をチェックすることをお勧めしますが、どちらの方法で実行時に効率がよくなるかわかりません。
私はif
のチェックが1または2の命令(アセンブリクラスからしばらくの間)だったと仮定しています。浮動小数点演算はそれ以上のものになるでしょう。
//Check
if (a != 10) { //1 or 2 instructions?
b *= (float) a/10; //Many instructions?
}
値a
は、「10」はほとんどの時間は、しかし、それは文句を言わないことがいくつかのインスタンスがあることになるだろう。 a
が除数に等しい場合でも、浮動小数点除算は非常に多くのサイクルを要しますか?
if
ステートメントの前のコードは、単に次のコードよりも効率的に実行されますか?任意の顕著な違いいずれかの方法があること文句を言わないが確かに
//Don't check
b *= (float) a/10; //Many instructions?
除数は、物事がプロセッサ重いを取得した場合の配当金に等しいとき、しかし私は、浮動小数点乗算の行動に関しては興味があります。
をはいあなたはコストを比較検討するのは正しいです - それ以外の場合は、おそらく気にしないはずなので、時間の十億を実行し、これはいくつかの非常にタイトなループであると仮定すると、その1-2命令事項の違い
両方のバージョンをマイクロベンチマークしましたか? – millimoose
いいえ、まだ、私は私の質問を更新するでしょう – styler1972
はい、ベンチマークが重要かどうかを判断するためにまず、そうでない場合は、最も簡単なことをしてください。それは、ブランチミスは部門よりも高価なはずなので、ブランチが非常に予測可能でない限り、チェックは価値がないはずです。 – comingstorm