对一个长度为100万的vector,使用moving(sum, X, 10)和msum(X, 10),性能差多少倍?为什么会造成这样的差距?

对一个长度为100万的vector,使用moving(sum, X, 10)和msum(X, 10),性能差多少倍?为什么会造成这样的差距?

请先 登录 后评论

1 个回答

YcHan韩迎春

根据数据量的不同,msum比moving快50到200倍。

原因有二:

1、取数据的方式不一样,msum是一次性把数据放入内存,不需要为每次计算再单独分配内存;而moving每次都要生成一个子对象,这个子对象每次都要重新分配内存,计算完成后还要回收内存。

2、msum使用的是增量计算,每次计算都使用了上一次的结果,直接加上下一个数,减去最后的一条数据;而moving每次计算都要把窗口内的数据累加一遍。

请先 登录 后评论