优化:在每一步计算或在最后计算全部

本文关键字:计算 全部 最后 每一步 优化 | 更新日期: 2023-09-27 18:27:41

我做了很多计算,在计算的中间,我得到一个结果,称之为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#中做到这一步。

优化:在每一步计算或在最后计算全部

First方法比naive迭代更快,因为在过程结束时不需要迭代X向量。

如果你只需要X值向量来计算统计数据,那么它在内存使用方面也更便宜。

您还可以考虑使用Linq方法来计算Sum/Mean/Count(Linq查询并行运行)Sum:Sum()N:计数()标准:聚合()