1

私は多くの計算を行い、その途中で結果を取得し、それを X と呼びます。

X に関連付けられている変数がいくつかあります。

X_sum : これまでの合計

X_sumOfSquares : 名前が示すように; X が生成されるたびに (X*X) の合計なので、基本的には X^2 の合計になります。

N : X を計算する演算が呼び出された回数

最後に、これらの数値を使用して、私が持っているサンプルの平均に基づいて、X の真の平均が存在する信頼範囲を計算します。

私が達成しようとしていることに関係なく、私の質問は次のとおりです。

X を 1000 回計算すると仮定すると、N = 1000 になります。どちらの方法が速いですか:

  1. X があるたびに x_sum と x_sumOfSquares を更新します。
  2. 最初にサイズ 1000 の配列を作成し、その配列に X のすべての値を格納します。最後に、配列を調べて x_sum と x_sumOfSquares を計算します。

2 番目の方法については、このメソッドをベクトル化する方法が本当にあるはずです。C++ でこれを行う方法があります。たとえば、Intel C++ にはこのような単純なケースの自動ベクトル化があったことを覚えていますが、その方法はわかりません。 C#で。

4

1 に答える 1

0

最初の方法は、プロセスの最後に X ベクトルを反復する必要がないため、単純な反復よりも高速です。

統計計算に X 値ベクトルのみが必要な場合は、メモリ使用量に関しても安価です。

また、Linq メソッドを使用して Sum/Mean/Count を計算することも検討できます (Linq クエリは並行して実行されます) Sum : Sum() N : Count() Std : Aggregate()

于 2013-08-18T16:57:16.203 に答える