SAX icon indicating copy to clipboard operation
SAX copied to clipboard

Performance improvement in TSProcessor

Open bernard01 opened this issue 6 years ago • 0 comments

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))); }

bernard01 avatar Aug 07 '17 01:08 bernard01