Avoid performance degradation of indexed access when using a linked list.

Thanks to Artavazd Balaian.

Closes #134.
This commit is contained in:
Gilles Sadowski 2020-04-11 13:42:03 +02:00
parent 7b005845af
commit 2d8adbf514
1 changed files with 3 additions and 4 deletions

View File

@ -86,9 +86,8 @@ public class EnumeratedDistribution<T> implements Serializable {
NotANumberException {
singletons = new ArrayList<>(pmf.size());
final double[] probs = new double[pmf.size()];
for (int i = 0; i < pmf.size(); i++) {
final Pair<T, Double> sample = pmf.get(i);
int count = 0;
for (Pair<T, Double> sample : pmf) {
singletons.add(sample.getKey());
final double p = sample.getValue();
if (p < 0) {
@ -100,7 +99,7 @@ public class EnumeratedDistribution<T> implements Serializable {
if (Double.isNaN(p)) {
throw new NotANumberException();
}
probs[i] = p;
probs[count++] = p;
}
probabilities = MathArrays.normalizeArray(probs, 1.0);