• ベストアンサー

プログラムの高速化

要素数Nのfloat型配列aに対して、 Σ(a[i]-a[i-1])^2 を計算するプログラムを高速化したいのですが、 どのような方法がありますか? 今のところ単純に、 答えをanswerとすると for(i = 1; i <= N; i++) answer += (a[i] - a[i-1])*(a[i] - a[i-1]); とする方法しか思いつかないのですが・・・・。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

本質的には並列計算するしかないでしょう. 場合によっては for (i = 1; i <= N; ++i) { d = a[i]-a[i-1]; answer += d*d; } の方が速いかもしれんけど, この辺は処理系が賢ければ問題ないわけだし. あるいはアセンブラ.

その他の回答 (1)

  • tadys
  • ベストアンサー率40% (856/2135)
回答No.2

この程度のプログラムで有れば工夫したところで高が知れています。 データの大きさや個数が大きい時には数値の桁落ちや桁あふれのほうが気になります。

関連するQ&A