0

私は数値解析プログラムをプログラミングしていますが、微積分がいくつかの係数に非常に小さな数を与えることがあります。a0=1.234542e-12

10個の値の配列(つまり、そのうちの6個は小さい数)を計算し、後でそれらのそれぞれにx = 1:10であるt ^ x(例として)を掛けると、計算が速くなりますか?

  • 少数のままにしておきます
  • より小さい数を検出thresholdし、0.0で置き換えます

問題は主に、コンパイラが常に0であるため、0を掛けた数値の計算を行わないか、単に乗算するだけでif、数値がであるかどうかを確認するために条件を追加するためにプログラムを遅くしているためです。 0かどうか。

4

2 に答える 2

3

あなたが尋ねている場合、あなたがそうであるように、これらの2つの操作の中でどちらが速いか:

  1. 0.0に近い数を含む数のベクトルを乗算します。
  2. 0.0に設定されている数値のベクトルを実行し、0.0に近い数値を乗算します。

まあ、限界では1は2よりも速いと思います。

于 2012-10-10T13:44:48.340 に答える
2

配列は定数ではなく、プログラムの中間結果であると思います。

その場合、どちらの場合も実行されるマシンコードはまったく同じであるため、0を掛ける場合と少数を掛ける場合の速度にまったく違いはありません。コンパイラは、配列の内容を認識していません。

于 2012-10-10T13:42:08.277 に答える