diff options
Diffstat (limited to 'container-search/src/main/java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/Normalizer.java | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/Normalizer.java b/container-search/src/main/java/com/yahoo/search/ranking/Normalizer.java index eb81d0555b3..0d86e1409c3 100644 --- a/container-search/src/main/java/com/yahoo/search/ranking/Normalizer.java +++ b/container-search/src/main/java/com/yahoo/search/ranking/Normalizer.java @@ -3,14 +3,29 @@ package com.yahoo.search.ranking; abstract class Normalizer { - protected final double[] data; + protected double[] data; protected int size = 0; - Normalizer(int maxSize) { - this.data = new double[maxSize]; + private static int initialCapacity(int hint) { + for (int capacity = 64; capacity < 4096; capacity *= 2) { + if (hint <= capacity) { + return capacity; + } + } + return 4096; + } + + Normalizer(int sizeHint) { + this.data = new double[initialCapacity(sizeHint)]; } int addInput(double value) { + if (size == data.length) { + int newSize = size * 2; + var tmp = new double[newSize]; + System.arraycopy(data, 0, tmp, 0, size); + this.data = tmp; + } data[size] = value; return size++; } |