-
Notifications
You must be signed in to change notification settings - Fork 23
Description
Impressive API. Thanks :)
Please let me suggest small performance improvements that I have verified to be effective with JMH.
net.seninp.jmotif.sax.TSProcessor
public double mean(double[] series) {
double res = 0D;
int count = 0;// series.length has it
for (double tp : series) {
res += tp;
count += 1;
}
if (count > 0) {
return res / ((Integer) count).doubleValue();// (double)count is faster as it does not need boxing
}
return Double.NaN;
}
So we get:
public double mean(double[] series) {
double res = 0D;
for (double tp : series) {
res += tp;
}
if (series.length > 0) {
return res / (double)series.length;
}
return Double.NaN;
}
and
public double mean(int[] series) {
double res = 0D;
for (int tp : series) {
res += (double) tp;
}
if (series.length > 0) {
return res / (double)series.length;
}
return Double.NaN;
}
and
public double var(double[] series) {
double res = 0D;
double mean = mean(series);
for (double tp : series) {
res += (tp - mean) * (tp - mean);
}
if (series.length > 0) {
return res / (double)series.length;
}
return Double.NaN;
}
and
public double stDev(double[] series) {
double num0 = 0D;
double sum = 0D;
for (double tp : series) {
num0 = num0 + tp * tp;
sum = sum + tp;
}
double len = (double)series.length;
return Math.sqrt((len * num0 - sum * sum) / (len * (len - 1)));
}