我看到很多 Java 开发人员和 Java 讲师编写的此类代码:
for ( int x = 0 ; x < myArray.length ; x++ )
accum += (mean() - myArray[x]) * (mean() - myArray[x] );
我对此非常批评,因为 mean() 对数组中的每个元素都被调用了两次,而实际上它只需要被调用一次:
double theMean = mean();
for ( int x = 0 ; x < myArray.length ; x++ )
accum += (theMean - myArray[x]) * (theMean - myArray[x]);
在 Java 中有什么优化可以让第一个例子可以接受吗?我应该停止骑乘开发人员吗?
*** 更多信息。样本数组存储为实例变量。 mean() 每次调用都要遍历数组并计算均值。
最佳答案
你是对的。您的方式(第二个代码示例)效率更高。我认为 Java 无法优化第一个代码示例以仅调用一次 mean()
并重新使用其返回值,因为 mean()
可能会产生副作用,因此,如果您的代码调用它两次,编译器将无法决定调用它一次。
关于java - 过度使用 Java 中的方法链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26494578/