ли Java компилятор достаточно умен, чтобы оптимизировать цикл ниже, путем извлеченияява оптимизации компилятора
Double average = new Double(totalTime/callCount);
из для цикла?
public double computeSD(Set values, int callCount, long totalTime) {
double diffs = 0.0d;
for(Iterator i=values.iterator(); i.hasNext();) {
double value = ((Double)i.next()).doubleValue();
Double average = new Double(totalTime/callCount);
diffs += (value – average.doubleValue()) * (value – average.doubleValue());
}
double variance = diffs/callCount;
return Math.sqrt(variance);
}
Какой компилятор Java? –
Анализ потока на конце компилятора JIT легко скажет вам, что объекты «Double» не выходят нигде, поэтому используются только их содержащиеся значения. Я смею сказать, что вышеприведенную функцию нужно легко оптимизировать в моде, который ищет ОП. –
Я сомневаюсь. Использование примитивного двойника и окончание callCount и totalTime могут помочь, но я все еще сомневаюсь в этом. – Thilo