Skip to content

Commit 81302a1

Browse files
authored
Pre-allocate the results size in Graph ResultSetBuilder (#144)
1 parent b24aa55 commit 81302a1

File tree

1 file changed

+32
-31
lines changed

1 file changed

+32
-31
lines changed

src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetImpl.java

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -63,42 +63,43 @@ public ResultSetImpl(List<Object> rawResponse, RedisGraph redisGraph, GraphCache
6363
*/
6464
@SuppressWarnings("unchecked")
6565
private List<Record> parseResult(List<List<Object>> rawResultSet) {
66-
List<Record> results = new ArrayList<>();
6766
if (rawResultSet == null || rawResultSet.isEmpty()) {
68-
return results;
69-
} else {
70-
// go over each raw result
71-
for (List<Object> row : rawResultSet) {
72-
73-
List<Object> parsedRow = new ArrayList<>(row.size());
74-
// go over each object in the result
75-
for (int i = 0; i < row.size(); i++) {
76-
// get raw representation of the object
77-
List<Object> obj = (List<Object>) row.get(i);
78-
// get object type
79-
Header.ResultSetColumnTypes objType = header.getSchemaTypes().get(i);
80-
// deserialize according to type and
81-
switch (objType) {
82-
case COLUMN_NODE:
83-
parsedRow.add(deserializeNode(obj));
84-
break;
85-
case COLUMN_RELATION:
86-
parsedRow.add(deserializeEdge(obj));
87-
break;
88-
case COLUMN_SCALAR:
89-
parsedRow.add(deserializeScalar(obj));
90-
break;
91-
default:
92-
parsedRow.add(null);
93-
break;
94-
}
67+
return new ArrayList<>(0);
68+
}
9569

70+
List<Record> results = new ArrayList<>(rawResultSet.size());
71+
// go over each raw result
72+
for (List<Object> row : rawResultSet) {
73+
74+
List<Object> parsedRow = new ArrayList<>(row.size());
75+
// go over each object in the result
76+
for (int i = 0; i < row.size(); i++) {
77+
// get raw representation of the object
78+
List<Object> obj = (List<Object>) row.get(i);
79+
// get object type
80+
Header.ResultSetColumnTypes objType = header.getSchemaTypes().get(i);
81+
// deserialize according to type and
82+
switch (objType) {
83+
case COLUMN_NODE:
84+
parsedRow.add(deserializeNode(obj));
85+
break;
86+
case COLUMN_RELATION:
87+
parsedRow.add(deserializeEdge(obj));
88+
break;
89+
case COLUMN_SCALAR:
90+
parsedRow.add(deserializeScalar(obj));
91+
break;
92+
default:
93+
parsedRow.add(null);
94+
break;
9695
}
97-
// create new record from deserialized objects
98-
Record record = new RecordImpl(header.getSchemaNames(), parsedRow);
99-
results.add(record);
10096
}
97+
98+
// create new record from deserialized objects
99+
Record record = new RecordImpl(header.getSchemaNames(), parsedRow);
100+
results.add(record);
101101
}
102+
102103
return results;
103104
}
104105

0 commit comments

Comments
 (0)