SAX
SAX copied to clipboard
Performance improvement in TSProcessor
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))); }