You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by hy...@apache.org on 2020/04/28 20:38:27 UTC
[calcite] branch master updated: [CALCITE-3878] Create ArrayList
with initial capacity when size is known (Xu Zhang)
This is an automated email from the ASF dual-hosted git repository.
hyuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/master by this push:
new 650ce46 [CALCITE-3878] Create ArrayList with initial capacity when size is known (Xu Zhang)
650ce46 is described below
commit 650ce466abf63309dcc0452d35a71dc497fb5f3c
Author: xu <xu...@alibaba-inc.com>
AuthorDate: Sun Apr 26 11:02:40 2020 +0800
[CALCITE-3878] Create ArrayList with initial capacity when size is known (Xu Zhang)
Close #1876
---
core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java | 7 ++++---
.../main/java/org/apache/calcite/prepare/CalcitePrepareImpl.java | 2 +-
core/src/main/java/org/apache/calcite/prepare/Prepare.java | 5 +++--
core/src/main/java/org/apache/calcite/rel/RelRoot.java | 2 +-
core/src/main/java/org/apache/calcite/rel/core/TableScan.java | 5 +++--
core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java | 2 +-
.../java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java | 4 ++--
7 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java b/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java
index c1fb22b..e7bca05 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java
@@ -161,9 +161,10 @@ public class CalciteMetaImpl extends MetaImpl {
private <E> MetaResultSet createResultSet(Enumerable<E> enumerable,
Class clazz, String... names) {
- final List<ColumnMetaData> columns = new ArrayList<>();
- final List<Field> fields = new ArrayList<>();
- final List<String> fieldNames = new ArrayList<>();
+ Objects.requireNonNull(names);
+ final List<ColumnMetaData> columns = new ArrayList<>(names.length);
+ final List<Field> fields = new ArrayList<>(names.length);
+ final List<String> fieldNames = new ArrayList<>(names.length);
for (String name : names) {
final int index = fields.size();
final String fieldName = AvaticaUtils.toCamelCase(name);
diff --git a/core/src/main/java/org/apache/calcite/prepare/CalcitePrepareImpl.java b/core/src/main/java/org/apache/calcite/prepare/CalcitePrepareImpl.java
index b121f3a..8d3f9b9 100644
--- a/core/src/main/java/org/apache/calcite/prepare/CalcitePrepareImpl.java
+++ b/core/src/main/java/org/apache/calcite/prepare/CalcitePrepareImpl.java
@@ -777,7 +777,7 @@ public class CalcitePrepareImpl implements CalcitePrepare {
int typeOrdinal = getTypeOrdinal(type);
switch (typeOrdinal) {
case Types.STRUCT:
- final List<ColumnMetaData> columns = new ArrayList<>();
+ final List<ColumnMetaData> columns = new ArrayList<>(type.getFieldList().size());
for (RelDataTypeField field : type.getFieldList()) {
columns.add(
metaData(typeFactory, field.getIndex(), field.getName(),
diff --git a/core/src/main/java/org/apache/calcite/prepare/Prepare.java b/core/src/main/java/org/apache/calcite/prepare/Prepare.java
index 9128cb4..5cf3b9c 100644
--- a/core/src/main/java/org/apache/calcite/prepare/Prepare.java
+++ b/core/src/main/java/org/apache/calcite/prepare/Prepare.java
@@ -138,7 +138,8 @@ public abstract class Prepare {
final DataContext dataContext = context.getDataContext();
planner.setExecutor(new RexExecutorImpl(dataContext));
- final List<RelOptMaterialization> materializationList = new ArrayList<>();
+ final List<RelOptMaterialization> materializationList =
+ new ArrayList<>(materializations.size());
for (Materialization materialization : materializations) {
List<String> qualifiedTableName = materialization.materializedTable.path();
materializationList.add(
@@ -148,7 +149,7 @@ public abstract class Prepare {
qualifiedTableName));
}
- final List<RelOptLattice> latticeList = new ArrayList<>();
+ final List<RelOptLattice> latticeList = new ArrayList<>(lattices.size());
for (CalciteSchema.LatticeEntry lattice : lattices) {
final CalciteSchema.TableEntry starTable = lattice.getStarTable();
final JavaTypeFactory typeFactory = context.getTypeFactory();
diff --git a/core/src/main/java/org/apache/calcite/rel/RelRoot.java b/core/src/main/java/org/apache/calcite/rel/RelRoot.java
index 27e8e45..bfda457 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelRoot.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelRoot.java
@@ -161,7 +161,7 @@ public class RelRoot {
|| rel instanceof LogicalProject)) {
return rel;
}
- final List<RexNode> projects = new ArrayList<>();
+ final List<RexNode> projects = new ArrayList<>(fields.size());
final RexBuilder rexBuilder = rel.getCluster().getRexBuilder();
for (Pair<Integer, String> field : fields) {
projects.add(rexBuilder.makeInputRef(rel, field.left));
diff --git a/core/src/main/java/org/apache/calcite/rel/core/TableScan.java b/core/src/main/java/org/apache/calcite/rel/core/TableScan.java
index f4701d1..c826f3c 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/TableScan.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/TableScan.java
@@ -154,8 +154,9 @@ public abstract class TableScan
&& extraFields.isEmpty()) {
return this;
}
- final List<RexNode> exprList = new ArrayList<>();
- final List<String> nameList = new ArrayList<>();
+ int fieldSize = fieldsUsed.size() + extraFields.size();
+ final List<RexNode> exprList = new ArrayList<>(fieldSize);
+ final List<String> nameList = new ArrayList<>(fieldSize);
final RexBuilder rexBuilder = getCluster().getRexBuilder();
final List<RelDataTypeField> fields = getRowType().getFieldList();
diff --git a/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java b/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java
index 28d25c4..75a843d 100644
--- a/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java
+++ b/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java
@@ -180,7 +180,7 @@ public abstract class MutableRels {
*/
public static List<RexNode> createProjects(final MutableRel child,
final List<RexNode> projs) {
- List<RexNode> rexNodeList = new ArrayList<>();
+ List<RexNode> rexNodeList = new ArrayList<>(projs.size());
for (int i = 0; i < projs.size(); i++) {
if (projs.get(i) instanceof RexInputRef) {
RexInputRef rexInputRef = (RexInputRef) projs.get(i);
diff --git a/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java b/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
index 63df2c4..a4fcd42 100644
--- a/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
+++ b/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
@@ -562,7 +562,7 @@ public class RelToSqlConverter extends SqlImplementor
? x.builder(e, Clause.WHERE)
: x.builder(e);
if (!isStar(program)) {
- final List<SqlNode> selectList = new ArrayList<>();
+ final List<SqlNode> selectList = new ArrayList<>(program.getProjectList().size());
for (RexLocalRef ref : program.getProjectList()) {
SqlNode sqlExpr = builder.context.toSql(program, ref);
addSelect(selectList, sqlExpr, e.getRowType());
@@ -610,7 +610,7 @@ public class RelToSqlConverter extends SqlImplementor
// In this case we need to construct the following query:
// SELECT NULL as C0, NULL as C1, NULL as C2 ... FROM DUAL WHERE FALSE
// This would return an empty result set with the same number of columns as the field names.
- final List<SqlNode> nullColumnNames = new ArrayList<>();
+ final List<SqlNode> nullColumnNames = new ArrayList<>(fieldNames.size());
for (String fieldName : fieldNames) {
SqlCall nullColumnName = as(SqlLiteral.createNull(POS), fieldName);
nullColumnNames.add(nullColumnName);