0

一旦你声明了一个变量,你就开始操作它。我的问题是关于操纵的速度,如果这很重要的话。
假设您有一个变量total,它是数组中所有值的总和。你想找到平均值,所以你会这样做total / length。您是更快地声明一个新值(即double avg = total / length),还是更快地“就地”完成所有事情(total \= length),这当然会忽略total平均值的一个糟糕的变量名称这一事实,但这只是为了明白我的意思

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

4

3 回答 3

2

假设您的意思是total /= length,您只会看到重要的差异(即,当您实际上需要同时使用totalavg时,在这种情况下,您无论如何都不能使用第二个版本)。

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

于 2012-09-17T12:50:23.707 回答
2

这取决于您使用平均值的频率。如果只使用几次,则可以忽略不计,但如果您需要使用该平均值数百或数千次,那么使用变量可能会“更快”,因为您不必一直进行计算。然而,今天的编译器在优化方面非常好,所以实际上它可能并不重要。

唯一可以确定的是对其进行测试,进行一些分析和测量。在考虑手动优化之前您应该始终做的事情(我怀疑计算平均值,甚至更复杂的事情会成为瓶颈。)

于 2012-09-17T12:55:43.350 回答
1

这取决于打开优化后编译器会做什么。

于 2012-09-17T12:47:52.693 回答