-1

最近のCPUSでは和の方が積より速いかな。合計の計算は数学的に簡単ですが、プロセッサでの乗算を高速化するための最適化がある場合があります。知らない。

私の場合、2 つのレベルのノイズを組み合わせて、それらにしきい値を適用したいと考えています。0からまでの範囲にあるため、単純にそれらを乗算し1、同じ範囲のしきい値を適用できます。0または、それらを合計して からまでの範囲のどこかにしきい値を適用することもできます2。アルゴリズムが同一ではないことはわかっていますが、どちらも私の要件を満たします。

4

3 に答える 3

2

最適化に関する質問に対する標準的な回答:

最初に実装を正しく、読みやすいものにしてください。次に、許容できるパフォーマンスが得られるかどうかを確認します。そうでない場合は、コードをプロファイリングして、どこで処理時間のほとんどを失っているかを確認してください。次に、それを正確に変更します。

2 番目のステップで読み取り可能なコードを変更する必要があるかもしれませんが、最初にコードを正しく読み取り可能にしたため、比較するベースラインがあり、コードが最初に何をするかを読み取ることができます。

于 2013-06-08T10:35:19.067 に答える
2

x86 の一般的な (プロセッサによって異なります) 数値は次のとおりです。

        Latency 1/Throughput
fp add:    3         1
fp mul:    5         1-3
int add:   1         < 1
int mul:   3-7       1-4

より多くのビットを持つ整数は乗算が遅くなり、倍幅乗算 (C では表現できない) はさらに遅くなります。

int add と int mul の大きな違いは、 の代わりにa+a(または) を書く必要があるという意味ではありません。ソースは (直接) パフォーマンスを決定するものではなく、結果のマシン コードが決定します。すべての本格的なコンパイラはとにかく強度削減を行います。 .a << 1a*2

于 2013-06-08T11:06:49.157 に答える