summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-01-21 16:37:52 +0100
committerGitHub <noreply@github.com>2024-01-21 16:37:52 +0100
commitb3c5df8e442239561d1a1ef0583a5f5820b6de85 (patch)
tree7d3d5f301584f7b7fc8a88369e62a315b0d1c377 /vespajlib/src/main/java
parentc973b6f20f29eb39cd35ab8782421dbbc2688504 (diff)
Revert "Balder/cached xxh3 hash"
Diffstat (limited to 'vespajlib/src/main/java')
-rw-r--r--vespajlib/src/main/java/com/yahoo/compress/Hasher.java17
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java3
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java24
3 files changed, 7 insertions, 37 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/compress/Hasher.java b/vespajlib/src/main/java/com/yahoo/compress/Hasher.java
index 7a3d34eca7b..92a9ed26085 100644
--- a/vespajlib/src/main/java/com/yahoo/compress/Hasher.java
+++ b/vespajlib/src/main/java/com/yahoo/compress/Hasher.java
@@ -8,25 +8,8 @@ import net.openhft.hashing.LongHashFunction;
* @author baldersheim
*/
public class Hasher {
- private final LongHashFunction hasher;
/** Uses net.openhft.hashing.LongHashFunction.xx3() */
public static long xxh3(byte [] data) {
return LongHashFunction.xx3().hashBytes(data);
}
- public static long xxh3(byte [] data, long seed) {
- return LongHashFunction.xx3(seed).hashBytes(data);
- }
-
- private Hasher(LongHashFunction hasher) {
- this.hasher = hasher;
- }
- public static Hasher withSeed(long seed) {
- return new Hasher(LongHashFunction.xx3(seed));
- }
- public long hash(long v) {
- return hasher.hashLong(v);
- }
- public long hash(String s) {
- return hasher.hashChars(s);
- }
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
index 55fb4af551e..62b0dd88b7d 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
@@ -10,7 +10,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -309,7 +308,7 @@ public class MixedTensor implements Tensor {
public static class BoundBuilder extends Builder {
/** For each sparse partial address, hold a dense subspace */
- private final Map<TensorAddress, double[]> denseSubspaceMap = new LinkedHashMap<>();
+ private final Map<TensorAddress, double[]> denseSubspaceMap = new HashMap<>();
private final Index.Builder indexBuilder;
private final Index index;
private final TensorType denseSubtype;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
index e011717cdd8..f841b7757fb 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
@@ -1,7 +1,6 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
-import com.yahoo.compress.Hasher;
import com.yahoo.tensor.impl.NumericTensorAddress;
import com.yahoo.tensor.impl.StringTensorAddress;
@@ -29,9 +28,6 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
return NumericTensorAddress.of(labels);
}
- // If the hash ends up as 0 it will be recalculated everytime, but that is not a practical issue.
- private int cached_hash = 0;
-
/** Returns the number of labels in this */
public abstract int size();
@@ -66,18 +62,12 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
@Override
public int hashCode() {
- if (cached_hash != 0) return cached_hash;
- Hasher hasher = Hasher.withSeed(0);
- long hash = 0;
+ int result = 1;
for (int i = 0; i < size(); i++) {
- String label = label(i);
- if (label != null) {
- hash = hash ^ hasher.hash(label);
- }
+ if (label(i) != null)
+ result = 31 * result + label(i).hashCode();
}
- int low = (int) hash;
- int high = (int) (hash >> 32);
- return cached_hash = low ^ high;
+ return result;
}
@Override
@@ -115,7 +105,7 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
public static class Builder {
final TensorType type;
- String[] labels;
+ final String[] labels;
public Builder(TensorType type) {
this(type, new String[type.dimensions().size()]);
@@ -172,9 +162,7 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
public TensorAddress build() {
validate();
- var address = StringTensorAddress.unsafeOf(labels);
- labels = null;
- return address;
+ return TensorAddress.of(labels);
}
}