summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2017-08-31 09:32:49 +0200
committerHarald Musum <musum@oath.com>2017-08-31 09:32:49 +0200
commit9f506465b36ef1b7a858211882fc3594d170b418 (patch)
tree5599ed86e4cee0fcb0dd696572b8d038b361b5c2 /container-search
parente4dc0493754618dd33ddf8985d0ddd23001a9d39 (diff)
parent0c7af1343cec5ca95e338ce83dda158f123e72dc (diff)
Merge branch 'master' into revert-3275-revert-3260-hmusum/remove-version-from-def-files
Diffstat (limited to 'container-search')
-rw-r--r--container-search/pom.xml3
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java1
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Hit.java14
4 files changed, 18 insertions, 2 deletions
diff --git a/container-search/pom.xml b/container-search/pom.xml
index f622567acde..837629c44b9 100644
--- a/container-search/pom.xml
+++ b/container-search/pom.xml
@@ -143,6 +143,7 @@
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
+ <version>4.5</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
@@ -210,7 +211,7 @@
<plugin> <!-- For the YQL query language -->
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
- <version>${antlr4.version}</version>
+ <version>4.5</version>
<executions>
<execution>
<configuration>
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 999846d1755..2eec7109722 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
@@ -271,12 +271,14 @@ public class FastHit extends Hit {
public void addSummary(Docsum docsum) {
LazyDocsumValue lazyDocsumValue = new LazyDocsumValue(docsum);
+ reserve(docsum.getDefinition().getFieldCount());
for (DocsumField field : docsum.getDefinition().getFields()) {
setDocsumFieldIfNotPresent(field.getName(), lazyDocsumValue);
}
}
void addSummary(DocsumDefinition docsumDef, Inspector value) {
+ reserve(docsumDef.getFieldCount());
for (DocsumField field : docsumDef.getFields()) {
String fieldName = field.getName();
if (value.type() == Type.STRING &&
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
index b03c0cb752f..6b4d3594087 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
@@ -227,6 +227,7 @@ public class Dispatcher extends AbstractComponent {
}
private void fill(FastHit hit, Inspector summary) {
+ hit.reserve(summary.fieldCount());
summary.traverse((String name, Inspector value) -> {
hit.setField(name, nativeTypeOf(value));
});
diff --git a/container-search/src/main/java/com/yahoo/search/result/Hit.java b/container-search/src/main/java/com/yahoo/search/result/Hit.java
index 815006edbf5..0bfbecfd9ab 100644
--- a/container-search/src/main/java/com/yahoo/search/result/Hit.java
+++ b/container-search/src/main/java/com/yahoo/search/result/Hit.java
@@ -101,8 +101,12 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi
public static final String SDDOCNAME_FIELD = "sddocname";
private Map<String,Object> getFieldMap() {
+ return getFieldMap(16);
+ }
+ private Map<String,Object> getFieldMap(int minSize) {
if (fields == null) {
- fields = new LinkedHashMap<>(16);
+ // Compensate for loadfactor and then some, rounded up....
+ fields = new LinkedHashMap<>(2*minSize);
}
return fields;
}
@@ -448,6 +452,14 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi
public final Map<String,Object> fields() { return getUnmodifiableFieldMap(); }
/**
+ * Will preallocate in order to avoid resizing.
+ * @param minSize
+ */
+ public void reserve(int minSize) {
+ getFieldMap(minSize);
+ }
+
+ /**
* Fields
* @return An iterator for traversing the fields
* @since 5.1.3