1

非常に多数の指数関数呼び出しを含む Fortran プログラムを作成しています。関数の引数がexp()変数の場合、関数の引数として定数値を使用する場合よりも計算速度が 20 倍以上遅くなることがわかりました。たとえば、次の 2 つのサンプル プログラムでは、プログラム A はプログラム B よりもはるかに低速です。

program A
real a,b
integer i

a=1.234
do i=1,100000000
  b=exp(a)
end do
stop
end program A

=====================

program B
integer i
real b

do i=1,100000000
  b=exp(1.234)
end do
stop
end program B

やむを得ず関数の引数に変数を使用する場合、計算exp()効率を上げるにはどうすればよいでしょうか?exp()

4

2 に答える 2

9

一部のコンパイラは、コンパイル時に定数に適用される組み込み関数を評価できます。したがって、この場合、組み込み関数を評価するための実行時のコストはありません。値は実行時までわからないため、明らかにこれは真の変数に対しては実行できません。

于 2012-07-05T23:06:54.077 に答える