我想知道我的标准差方法能否更加高效。所谓高效是指快速,而快速是指从方法调用到方法返回的延迟较短。
以下是代码:
以下是代码:
public double stdDev(ArrayList<Double> input) {
double Nrecip = ( 1.0 / ( input.size()) );
double sum = 0.0;
double average = 0.0;
for (Double input : inputs) {
average += input;
} average *= Nrecip;
for (Double input : inputs) {
sum += ( (input - average)*(input - average) );
} sum *= Nrecip;
return Math.sqrt(sum);
}
我希望能得到您的帮助和建议。
average += Nrecip*input;
,但这并不能使任何东西更快。 - OneCricketeerdouble
而不是Double
,这样可以节省大量的内存空间。 - Peter Lawrey(input - average)
时只需计算一次,而不是两次? - OneCricketeer