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。

对于第二种方法,确实应该有一种方法可以对这种方法进行矢量化,在 C++ 中有一些方法可以做到这一点,例如我记得英特尔 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 回答