diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-03-21 09:44:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-21 09:44:22 +0100 |
commit | 33eeb6ed96722baa0cdc05c8e0d38ed01bacb4ca (patch) | |
tree | 143e3d6686155d08f9202654ff174014a8f51a57 | |
parent | f54343d798a304c620b42a5cc6aa783ea53cc784 (diff) | |
parent | 4e99438d7b334986354999503c689963858d9f30 (diff) |
Merge pull request #26506 from vespa-engine/balder/presize-array
Balder/presize array
6 files changed, 26 insertions, 13 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java index 47982174d4f..a5fe73dfc5d 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java @@ -53,7 +53,7 @@ public class FastHit extends Hit { * This ensures that values set from code overwrites any value received as * summary data, and fetching a new summary overrides previous summaries. * - * The reason we keep this rather than eagerly decoding into a the field map + * The reason we keep this rather than eagerly decoding into a field map * is to reduce garbage collection and decoding cost, with the assumption * that most fields passes through the container with no processing most * of the time. diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/FlatteningSearcher.java b/container-search/src/main/java/com/yahoo/search/grouping/result/FlatteningSearcher.java index 30dee0e540e..e56b88c3d3e 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/result/FlatteningSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/result/FlatteningSearcher.java @@ -45,8 +45,9 @@ public class FlatteningSearcher extends Searcher { // If we count the number of unique groups, use that as total hit count. if (level == 0 && (hit instanceof RootGroup)) { - if (hit.fields().get("count()") != null) - result.setTotalHitCount((long)hit.fields().get("count()")); + Object countField = hit.getField("count()"); + if (countField != null) + result.setTotalHitCount((long)countField); } if (hit instanceof HitGroup) { diff --git a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java index 352a31553e7..44620179c1d 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java @@ -730,7 +730,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> { if (wset != null) return wset; } if (settings.convertDeep()) { - var array = new Value.ArrayValue(); + var array = new Value.ArrayValue(data.entryCount()); for (int i = 0; i < data.entryCount(); i++) { Inspector obj = data.entry(i); array.add(deepMaybeConvert(obj)); diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java b/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java index f8fdfb34ca0..06fa3982b18 100644 --- a/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java @@ -4,6 +4,7 @@ package com.yahoo.search.searchchain.testutil; import java.util.Collection; import java.util.HashSet; +import java.util.Iterator; import java.util.Set; import java.util.Map; import java.util.HashMap; @@ -145,9 +146,9 @@ public class DocumentSourceSearcher extends Searcher { copyFieldValuesThatExist(filledHit,hitToFill,fieldsToFill); } else { // TODO: remove this block and update fieldsToFill above to throw an exception if no appropriate summary class is found - for (Map.Entry<String,Object> propertyEntry : filledHit.fields().entrySet()) { - hitToFill.setField(propertyEntry.getKey(), - propertyEntry.getValue()); + for (var iter = filledHit.fieldIterator(); iter.hasNext();) { + var propertyEntry = iter.next(); + hitToFill.setField(propertyEntry.getKey(), propertyEntry.getValue()); } } hitToFill.setFilled(summaryClass == null ? DEFAULT_SUMMARY_CLASS : summaryClass); diff --git a/vespajlib/abi-spec.json b/vespajlib/abi-spec.json index 88872fef8a1..48d519b3a62 100644 --- a/vespajlib/abi-spec.json +++ b/vespajlib/abi-spec.json @@ -145,6 +145,7 @@ ], "methods" : [ "public void <init>()", + "public void <init>(int)", "public boolean valid()", "public com.yahoo.data.access.Type type()", "public int entryCount()", diff --git a/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java b/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java index 2f4c8c59f1d..c4333ee2c29 100644 --- a/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java +++ b/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java @@ -1,7 +1,11 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.data.access.simple; -import com.yahoo.data.access.*; +import com.yahoo.data.access.ArrayTraverser; +import com.yahoo.data.access.Inspector; +import com.yahoo.data.access.ObjectTraverser; +import com.yahoo.data.access.Type; + import java.util.Collections; import java.util.Map; import java.util.LinkedHashMap; @@ -54,7 +58,7 @@ public class Value implements Inspector { public byte[] asData() { return empty_array; } } static public class BoolValue extends Value { - private boolean value; + private final boolean value; public BoolValue(boolean v) { value = v; } public boolean valid() { return true; } public Type type() { return Type.BOOL; } @@ -62,7 +66,7 @@ public class Value implements Inspector { public boolean asBool(boolean x) { return value; } } static public class LongValue extends Value { - private long value; + private final long value; public LongValue(long v) { value = v; } public boolean valid() { return true; } public Type type() { return Type.LONG; } @@ -72,7 +76,7 @@ public class Value implements Inspector { public double asDouble(double x) { return (double)value; } } static public class DoubleValue extends Value { - private double value; + private final double value; public DoubleValue(double v) { value = v; } public boolean valid() { return true; } public Type type() { return Type.DOUBLE; } @@ -129,7 +133,13 @@ public class Value implements Inspector { public byte[] asData(byte[] x) { return value; } } static public class ArrayValue extends Value { - private List<Inspector> values = new ArrayList<>(); + private final List<Inspector> values; + public ArrayValue() { + values = new ArrayList<>(); + } + public ArrayValue(int capacity) { + values = new ArrayList<>(capacity); + } public boolean valid() { return true; } public Type type() { return Type.ARRAY; } public int entryCount() { return values.size(); } @@ -169,7 +179,7 @@ public class Value implements Inspector { } } static public class ObjectValue extends Value { - private Map<java.lang.String,Inspector> values = new LinkedHashMap<>(); + private final Map<java.lang.String,Inspector> values = new LinkedHashMap<>(); public boolean valid() { return true; } public Type type() { return Type.OBJECT; } public int fieldCount() { return values.size(); } |