2012-09-17 21 views
0

只要声明变量,就开始操作它。我的问题是操纵的速度,如果它甚至很重要。
比方说你有一个变量total,它是数组中所有值的总和。你想找到平均值,所以你会做total/length。你是否更快地宣布一个新的值(即double avg = total/length),还是更快地做一切“到位”(total \= length),这当然会忽略这样一个事实,即total是一个很差的变量名称,但这个只是为了得到我的观点就位数据处理

我怀疑由于处理器需要从RAM复制数据在ALU中进行计算,甚至通过位移在CPU中进行硬连线计算,但我不确定C++如何处理记忆,我很好奇它是如何在后端工作的。

回答

2

这取决于你平均使用的频率。如果它只用了几次,那么它可以忽略不计,但如果你需要使用平均数百或数千次,那么它可能会“更快”地使用一个变量,因为你不必进行所有的计算时间。然而,今天的编译器在优化方面非常出色,所以实际上它可能不会有问题。

唯一知道的就是测试它,做一些分析和测量。一些你应该总是之前做的手动优化之前做的事情(我怀疑计算平均数,甚至更复杂的东西,将成为一个瓶颈。)

1

这取决于您的编译器在打开优化后的功能。

2

假设你的意思total /= length,你只能看到一个区别在哪里它的事项(即当你真正需要同时使用totalavg,在这种情况下,你无论如何也使用第二版)。

我反对使用total /= length,因为total变成平均值,它在语义上不再正确。