diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2022-08-26 10:42:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-26 10:42:44 +0200 |
commit | db4fce7cab1470c85e32cf8c0db10accb47f9a5d (patch) | |
tree | 5c8ced9d0b78c7494a28fc7783711f1502488716 | |
parent | 5beba0e1309056ebc30b2c0778eac17e827cfe74 (diff) | |
parent | e8b44bb91561034bb92c4671f5b25bd79702adc6 (diff) |
Merge pull request #23798 from vespa-engine/bratseth/fastpath-hashmap-and-set
Bratseth/fastpath hashmap and set
-rw-r--r-- | container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java | 8 | ||||
-rw-r--r-- | container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java | 7 |
2 files changed, 11 insertions, 4 deletions
diff --git a/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java b/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java index cb1b2d6888c..8ff54ab6728 100644 --- a/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java +++ b/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java @@ -7,6 +7,8 @@ import com.yahoo.lang.PublicCloneable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.logging.Logger; import java.util.LinkedList; import java.util.ArrayList; @@ -81,7 +83,7 @@ public class CloneHelper { @SuppressWarnings({"removal"}) protected Object objectClone(Object object) { - // Fastpath for our commonly used classes + // Fastpath for commonly used classes if (object instanceof FreezableClass) return ((FreezableClass)object).clone(); else if (object instanceof PublicCloneable) @@ -92,6 +94,10 @@ public class CloneHelper { return ((LinkedList<?>) object).clone(); else if (object instanceof ArrayList) return ((ArrayList<?>) object).clone(); + else if (object instanceof HashMap) + return ((HashMap<?, ?>) object).clone(); + else if (object instanceof HashSet) + return ((HashSet<?>) object).clone(); try { return cloneByReflection(object); } catch (ClassCastException e) { diff --git a/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java b/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java index 46859ab1cbe..db8925c5da4 100644 --- a/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java @@ -5,6 +5,7 @@ import com.yahoo.processing.request.properties.PropertyMap; import org.junit.jupiter.api.Test; import java.util.Collections; +import java.util.HashMap; import java.util.List; import static org.junit.jupiter.api.Assertions.*; @@ -27,11 +28,11 @@ public class PropertyMapTestCase { assertNotNull(map.get("nonclonable")); PropertyMap mapClone = map.clone(); - assertTrue(map.get("clonable") != mapClone.get("clonable")); + assertNotSame(map.get("clonable"), mapClone.get("clonable")); assertEquals(map.get("nonclonable"), mapClone.get("nonclonable")); - assertTrue(map.get("clonableArray") != mapClone.get("clonableArray")); - assertTrue(first(map.get("clonableArray")) != first(mapClone.get("clonableArray"))); + assertNotSame(map.get("clonableArray"), mapClone.get("clonableArray")); + assertNotSame(first(map.get("clonableArray")), first(mapClone.get("clonableArray"))); assertEquals(first(map.get("nonclonableArray")), first(mapClone.get("nonclonableArray"))); } |