diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-11-28 18:38:58 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-11-28 18:38:58 +0100 |
commit | 4955aa286bb12a9258ca94da77bc32f98ab2e80b (patch) | |
tree | 4fadc397d1dce49dc23890dc12810ad0a9769ba1 /vespajlib | |
parent | 67fa513bc95e37a1e3c45715efa6d79e26a5e71c (diff) |
Allow dimension replacing
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/TensorType.java | 14 | ||||
-rw-r--r-- | vespajlib/src/test/java/com/yahoo/tensor/TensorFunctionBenchmark.java | 1 |
2 files changed, 14 insertions, 1 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java index 5ab0bd75a5a..4ad0835cfb4 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java @@ -61,7 +61,7 @@ public class TensorType { b.add(thisDimension); for (Dimension otherDimension : other.dimensions) { Dimension thisDimension = b.dimensions.get(otherDimension.name()); - b.add(otherDimension.combineWith(Optional.ofNullable(thisDimension))); + b.addOrReplace(otherDimension.combineWith(Optional.ofNullable(thisDimension))); } return b.build(); } @@ -240,6 +240,18 @@ public class TensorType { return this; } + private Builder addOrReplace(Dimension dimension) { // TODO: Not quite sure I like this solution + Objects.requireNonNull(dimension, "A dimension cannot be null"); + + if ( ! dimensions.isEmpty()) { + validateDimensionType(dimension); + } + + dimensions.put(dimension.name(), dimension); + prevDimension = dimension; + return this; + } + private void validateDimensionName(Dimension newDimension) { Dimension prevDimension = dimensions.get(newDimension.name()); if (prevDimension != null) { diff --git a/vespajlib/src/test/java/com/yahoo/tensor/TensorFunctionBenchmark.java b/vespajlib/src/test/java/com/yahoo/tensor/TensorFunctionBenchmark.java index 3ba38205f59..c0d2e37cbdc 100644 --- a/vespajlib/src/test/java/com/yahoo/tensor/TensorFunctionBenchmark.java +++ b/vespajlib/src/test/java/com/yahoo/tensor/TensorFunctionBenchmark.java @@ -58,6 +58,7 @@ public class TensorFunctionBenchmark { public static void main(String[] args) { // Was: 144 ms + // After adding type: 290 ms new TensorFunctionBenchmark().benchmark(100); } |