You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2020/04/11 11:54:55 UTC

[commons-math] 01/02: Avoid performance degradation of indexed access when using a linked list.

This is an automated email from the ASF dual-hosted git repository.

erans pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-math.git

commit 2d8adbf5148543bebc026d984f54cc43b9e9f545
Author: Gilles Sadowski <gi...@gmail.com>
AuthorDate: Sat Apr 11 13:42:03 2020 +0200

    Avoid performance degradation of indexed access when using a linked list.
    
    Thanks to Artavazd Balaian.
    
    Closes #134.
---
 .../apache/commons/math4/distribution/EnumeratedDistribution.java  | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/apache/commons/math4/distribution/EnumeratedDistribution.java b/src/main/java/org/apache/commons/math4/distribution/EnumeratedDistribution.java
index 5b1cd30..27f53bd 100644
--- a/src/main/java/org/apache/commons/math4/distribution/EnumeratedDistribution.java
+++ b/src/main/java/org/apache/commons/math4/distribution/EnumeratedDistribution.java
@@ -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);