summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-01-22 08:46:12 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2024-01-22 08:46:12 +0100
commit91aa2ba81d7dff1c401f91c5de9e5510f93e11f3 (patch)
tree7373613abb904f9a6d50748bb0ea028cb1aa85da /vespajlib
parente3db51d6c6d40be54495ed121c64be43978d1120 (diff)
- Using optional in the inner loop is often very inefficient. It bloats the code
and most of the time hampers the compilers abilitity to inline and optimize.
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java6
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorType.java7
2 files changed, 10 insertions, 3 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
index 1346ee7cf46..95a02bb685c 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
@@ -150,10 +150,10 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
public Builder add(String dimension, String label) {
Objects.requireNonNull(dimension, "dimension cannot be null");
Objects.requireNonNull(label, "label cannot be null");
- Optional<Integer> labelIndex = type.indexOfDimension(dimension);
- if ( labelIndex.isEmpty())
+ int labelIndex = type.indexOfDimensionAsInt(dimension);
+ if ( labelIndex < 0)
throw new IllegalArgumentException(type + " does not contain dimension '" + dimension + "'");
- labels[labelIndex.get()] = label;
+ labels[labelIndex] = label;
return this;
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java
index 82968476296..4c65977fdc9 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java
@@ -199,6 +199,13 @@ public class TensorType {
return Optional.of(i);
return Optional.empty();
}
+ /** Returns the 0-base index of this dimension, or empty if it is not present */
+ int indexOfDimensionAsInt(String dimension) {
+ for (int i = 0; i < dimensions.size(); i++)
+ if (dimensions.get(i).name().equals(dimension))
+ return i;
+ return -1;
+ }
/* Returns the bound of this dimension if it is present and bound in this, empty otherwise */
public Optional<Long> sizeOfDimension(String dimension) {