This is an automated email from the ASF dual-hosted git repository. Caideyipi pushed a commit to branch cp-18851-dev-1.3 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 65a6768f10fd20d445f199f3c1c69808c34ea2f2 Author: Caideyipi <[email protected]> AuthorDate: Tue Oct 13 16:46:07 2026 +0800 [Performance] Pre-size collections with known cardinality Backport #18851 by re-scanning dev/1.3 for equivalent collection materialization paths and adapting capacity hints to this branch's schema, plan, Session, Pipe, memtable, and UDF implementations. (cherry picked from commit a78f5a736c7e34a951fa1dda34a314fc8a47b7c9) --- .../org/apache/iotdb/rpc/IoTDBJDBCDataSet.java | 8 ++++---- .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java | 8 ++++---- .../java/org/apache/iotdb/session/Session.java | 12 ++++++------ .../apache/iotdb/session/util/SessionUtils.java | 2 +- .../consensus/request/write/auth/AuthorPlan.java | 4 ++-- .../request/write/model/UpdateModelInfoPlan.java | 2 +- .../pipe/payload/PipeDeactivateTemplatePlan.java | 4 ++-- .../pipe/task/OperateMultiplePipesPlanV2.java | 2 +- .../topic/AlterMultipleTopicsPlan.java | 2 +- .../impl/schema/DeactivateTemplateProcedure.java | 3 ++- .../impl/sync/AuthOperationProcedure.java | 2 +- .../payload/FetchCombineResultRequest.java | 2 +- .../db/queryengine/common/TimeseriesContext.java | 4 +++- .../fragment/FragmentInstanceFailureInfo.java | 4 ++-- .../operator/process/FilterAndProjectOperator.java | 6 ++++-- .../operator/process/TransformOperator.java | 2 +- .../db/queryengine/plan/analyze/TemplatedInfo.java | 4 ++-- .../db/queryengine/plan/analyze/TypeProvider.java | 3 ++- .../plan/expression/multi/FunctionExpression.java | 4 ++-- .../visitor/ColumnTransformerVisitor.java | 6 ++++-- .../visitor/CompleteMeasurementSchemaVisitor.java | 2 +- .../visitor/IntermediateLayerVisitor.java | 3 ++- .../metedata/read/LevelTimeSeriesCountNode.java | 4 ++-- .../metedata/read/SeriesSchemaFetchScanNode.java | 4 ++-- .../node/metedata/read/TimeSeriesCountNode.java | 4 ++-- .../metedata/read/TimeSeriesSchemaScanNode.java | 4 ++-- .../write/CreateAlignedTimeSeriesNode.java | 16 ++++++++-------- .../metedata/write/CreateMultiTimeSeriesNode.java | 3 ++- .../plan/node/metedata/write/MeasurementGroup.java | 14 +++++++------- .../metedata/write/view/AlterLogicalViewNode.java | 5 +++-- .../metedata/write/view/CreateLogicalViewNode.java | 5 +++-- .../node/process/AggregationMergeSortNode.java | 2 +- .../planner/plan/node/process/AggregationNode.java | 2 +- .../planner/plan/node/process/DeviceMergeNode.java | 2 +- .../planner/plan/node/process/DeviceViewNode.java | 9 +++++---- .../plan/node/process/GroupByLevelNode.java | 3 ++- .../planner/plan/node/process/GroupByTagNode.java | 7 ++++--- .../planner/plan/node/process/MergeSortNode.java | 2 +- .../planner/plan/node/process/ProjectNode.java | 2 +- .../plan/node/process/RawDataAggregationNode.java | 2 +- .../plan/node/process/SingleDeviceViewNode.java | 2 +- .../node/process/SlidingWindowAggregationNode.java | 2 +- .../plan/planner/plan/node/process/TopKNode.java | 2 +- .../planner/plan/node/process/TransformNode.java | 2 +- .../planner/plan/node/sink/IdentitySinkNode.java | 2 +- .../planner/plan/node/sink/ShuffleSinkNode.java | 2 +- .../source/AlignedSeriesAggregationScanNode.java | 3 ++- .../plan/node/source/AlignedSeriesScanNode.java | 2 +- .../plan/node/source/DeviceRegionScanNode.java | 3 ++- .../node/source/SeriesAggregationScanNode.java | 3 ++- .../plan/node/source/TimeseriesRegionScanNode.java | 12 +++++++----- .../plan/node/write/InsertMultiTabletsNode.java | 5 ++--- .../planner/plan/node/write/InsertRowsNode.java | 5 ++--- .../parameter/model/ModelInferenceDescriptor.java | 6 +++--- .../dag/column/CaseWhenThenColumnTransformer.java | 6 +++--- .../visitor/SchemaRegionPlanDeserializer.java | 22 ++++++++++++---------- .../dataregion/memtable/AbstractMemTable.java | 18 ++++++++++++++---- .../memtable/AlignedWritableMemChunk.java | 2 +- .../dataregion/memtable/WritableMemChunk.java | 2 +- .../tsfile/timeindex/DeviceTimeIndex.java | 4 ++-- .../load/splitter/AlignedChunkData.java | 4 ++-- .../strategy/RandomOnDiskUsableSpaceStrategy.java | 2 +- .../apache/iotdb/db/utils/sort/DiskSpiller.java | 4 ++-- .../org/apache/iotdb/commons/auth/entity/Role.java | 6 ++++-- .../org/apache/iotdb/commons/auth/entity/User.java | 7 ++++--- .../commons/auth/user/LocalFileUserAccessor.java | 2 +- .../consensus/index/impl/StateProgressIndex.java | 5 +++-- .../iotdb/commons/model/ModelHyperparameter.java | 2 +- .../org/apache/iotdb/commons/path/AlignedPath.java | 4 ++-- .../org/apache/iotdb/commons/path/PartialPath.java | 2 +- .../apache/iotdb/commons/path/PathPatternNode.java | 3 ++- .../PipeConsensusTransferFileSealWithModReq.java | 10 +++++----- .../thrift/request/PipeTransferFileSealReqV2.java | 8 ++++---- .../thrift/request/PipeTransferHandshakeV2Req.java | 4 ++-- .../multi/FunctionViewExpression.java | 4 ++-- .../org/apache/iotdb/commons/utils/AuthUtils.java | 2 +- .../commons/utils/BasicStructureSerDeUtil.java | 15 ++++++++------- .../org/apache/iotdb/commons/utils/IOUtils.java | 2 +- .../apache/iotdb/library/dprofile/UDTFSegment.java | 2 +- .../iotdb/library/match/PatternExecutor.java | 4 ++-- 80 files changed, 206 insertions(+), 170 deletions(-) diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java index 254c6d68598..5aff6cb1d63 100644 --- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java +++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java @@ -113,8 +113,8 @@ public class IoTDBJDBCDataSet { this.zoneId = zoneId; columnSize = columnNameList.size(); - this.columnNameList = new ArrayList<>(); - this.columnTypeList = new ArrayList<>(); + this.columnNameList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 : 1)); + this.columnTypeList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 : 1)); if (!ignoreTimeStamp) { this.columnNameList.add(TIMESTAMP_STR); this.columnTypeList.add(String.valueOf(TSDataType.INT64)); @@ -222,8 +222,8 @@ public class IoTDBJDBCDataSet { this.zoneId = zoneId; columnSize = columnNameList.size(); - this.columnNameList = new ArrayList<>(); - this.columnTypeList = new ArrayList<>(); + this.columnNameList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 : 1)); + this.columnTypeList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 : 1)); if (!ignoreTimeStamp) { this.columnNameList.add(TIMESTAMP_STR); this.columnTypeList.add(String.valueOf(TSDataType.INT64)); diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java index 2ff01502fb3..615105ae474 100644 --- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java +++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java @@ -111,8 +111,8 @@ public class IoTDBRpcDataSet { this.moreData = moreData; columnSize = columnNameList.size(); - this.columnNameList = new ArrayList<>(); - this.columnTypeList = new ArrayList<>(); + this.columnNameList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 : 1)); + this.columnTypeList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 : 1)); if (!ignoreTimeStamp) { this.columnNameList.add(TIMESTAMP_STR); this.columnTypeList.add(String.valueOf(TSDataType.INT64)); @@ -205,8 +205,8 @@ public class IoTDBRpcDataSet { this.moreData = moreData; columnSize = columnNameList.size(); - this.columnNameList = new ArrayList<>(); - this.columnTypeList = new ArrayList<>(); + this.columnNameList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 : 1)); + this.columnTypeList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 : 1)); if (!ignoreTimeStamp) { this.columnNameList.add(TIMESTAMP_STR); this.columnTypeList.add(String.valueOf(TSDataType.INT64)); diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java index c8d26f0cefe..f5901e93624 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java @@ -2531,7 +2531,7 @@ public class Session implements ISession { List<List<TSDataType>> typesList, List<List<String>> measurementsList) throws IoTDBConnectionException { - List<ByteBuffer> buffersList = new ArrayList<>(); + List<ByteBuffer> buffersList = new ArrayList<>(valuesList.size()); for (int i = 0; i < valuesList.size(); i++) { ByteBuffer buffer = SessionUtils.getValueBuffer(typesList.get(i), valuesList.get(i), measurementsList.get(i)); @@ -2870,8 +2870,8 @@ public class Session implements ISession { sortTablet(tablet); } request.addToPrefixPaths(tablet.deviceId); - List<String> measurements = new ArrayList<>(); - List<Integer> dataTypes = new ArrayList<>(); + List<String> measurements = new ArrayList<>(tablet.getSchemas().size()); + List<Integer> dataTypes = new ArrayList<>(tablet.getSchemas().size()); request.setIsAligned(isAligned); for (IMeasurementSchema measurementSchema : tablet.getSchemas()) { if (measurementSchema.getMeasurementId() == null) { @@ -3530,9 +3530,9 @@ public class Session implements ISession { List<List<TSEncoding>> encodings, List<CompressionType> compressors) throws IoTDBConnectionException, StatementExecutionException { - List<String> flatMeasurements = new ArrayList<>(); - List<TSDataType> flatDataTypes = new ArrayList<>(); - List<TSEncoding> flatEncodings = new ArrayList<>(); + List<String> flatMeasurements = new ArrayList<>(measurements.size()); + List<TSDataType> flatDataTypes = new ArrayList<>(measurements.size()); + List<TSEncoding> flatEncodings = new ArrayList<>(measurements.size()); for (int idx = 0; idx < measurements.size(); idx++) { flatMeasurements.add(measurements.get(idx).get(0)); flatDataTypes.add(dataTypes.get(idx).get(0)); diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java index 31ca44aa3ff..57a50c49847 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java @@ -330,7 +330,7 @@ public class SessionUtils { if (nodeUrls == null) { throw new NumberFormatException("nodeUrls is null"); } - List<TEndPoint> endPointsList = new ArrayList<>(); + List<TEndPoint> endPointsList = new ArrayList<>(nodeUrls.size()); for (String nodeUrl : nodeUrls) { TEndPoint endPoint = UrlUtils.parseTEndPointIpv4AndIpv6Url(nodeUrl); endPointsList.add(endPoint); diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorPlan.java index 8711cd86587..7e7f561b814 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorPlan.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorPlan.java @@ -26,6 +26,7 @@ import org.apache.iotdb.commons.utils.BasicStructureSerDeUtil; import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan; import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType; +import com.google.common.collect.Sets; import org.apache.tsfile.utils.ReadWriteIOUtils; import org.slf4j.Logger; @@ -33,7 +34,6 @@ import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; @@ -181,7 +181,7 @@ public class AuthorPlan extends ConfigPhysicalPlan { this.permissions = null; } else { final int permissionsSize = buffer.getInt(); - this.permissions = new HashSet<>(); + this.permissions = Sets.newHashSetWithExpectedSize(permissionsSize); for (int i = 0; i < permissionsSize; i++) { permissions.add(buffer.getInt()); } diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/model/UpdateModelInfoPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/model/UpdateModelInfoPlan.java index ca74d2daf69..168f64d4309 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/model/UpdateModelInfoPlan.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/model/UpdateModelInfoPlan.java @@ -88,7 +88,7 @@ public class UpdateModelInfoPlan extends ConfigPhysicalPlan { this.modelName = ReadWriteIOUtils.readString(buffer); this.modelInformation = ModelInformation.deserialize(buffer); int size = ReadWriteIOUtils.readInt(buffer); - this.nodeIds = new ArrayList<>(); + this.nodeIds = new ArrayList<>(size); for (int i = 0; i < size; i++) { this.nodeIds.add(ReadWriteIOUtils.readInt(buffer)); } diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java index cf9afa0fd8c..22eb6af6848 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java @@ -25,13 +25,13 @@ import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan; import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType; import org.apache.iotdb.db.schemaengine.template.Template; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -69,7 +69,7 @@ public class PipeDeactivateTemplatePlan extends ConfigPhysicalPlan { @Override protected void deserializeImpl(ByteBuffer buffer) throws IOException { int size = ReadWriteIOUtils.readInt(buffer); - templateSetInfo = new HashMap<>(); + templateSetInfo = Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; i++) { PartialPath pattern = (PartialPath) PathDeserializeUtil.deserialize(buffer); int templateNum = ReadWriteIOUtils.readInt(buffer); diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java index c9ff9f57448..5ea97c1c840 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java @@ -75,8 +75,8 @@ public class OperateMultiplePipesPlanV2 extends ConfigPhysicalPlan { @Override protected void deserializeImpl(ByteBuffer buffer) throws IOException { if (ReadWriteIOUtils.readBool(buffer)) { - subPlans = new ArrayList<>(); int size = ReadWriteIOUtils.readInt(buffer); + subPlans = new ArrayList<>(size); for (int i = 0; i < size; i++) { short type = ReadWriteIOUtils.readShort(buffer); if (type == ConfigPhysicalPlanType.CreatePipeV2.getPlanType()) { diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java index d3dd66439f6..62e674b43d1 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java @@ -65,8 +65,8 @@ public class AlterMultipleTopicsPlan extends ConfigPhysicalPlan { @Override protected void deserializeImpl(ByteBuffer buffer) throws IOException { if (ReadWriteIOUtils.readBool(buffer)) { - subPlans = new ArrayList<>(); int size = ReadWriteIOUtils.readInt(buffer); + subPlans = new ArrayList<>(size); for (int i = 0; i < size; i++) { // This will read the type of the plan (AlterTopicPlan), which will be ignored ReadWriteIOUtils.readShort(buffer); diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java index fffb0fbca18..8cecbacd399 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java @@ -48,6 +48,7 @@ import org.apache.iotdb.mpp.rpc.thrift.TRollbackSchemaBlackListWithTemplateReq; import org.apache.iotdb.pipe.api.exception.PipeException; import org.apache.iotdb.rpc.TSStatusCode; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -378,7 +379,7 @@ public class DeactivateTemplateProcedure super.deserialize(byteBuffer); queryId = ReadWriteIOUtils.readString(byteBuffer); int size = ReadWriteIOUtils.readInt(byteBuffer); - Map<PartialPath, List<Template>> templateSetInfo = new HashMap<>(); + Map<PartialPath, List<Template>> templateSetInfo = Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; i++) { PartialPath pattern = (PartialPath) PathDeserializeUtil.deserialize(byteBuffer); int templateNum = ReadWriteIOUtils.readInt(byteBuffer); diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java index b643e6de23b..22c8741966b 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java @@ -213,7 +213,7 @@ public class AuthOperationProcedure extends AbstractNodeProcedure<AuthOperationP public void deserialize(ByteBuffer byteBuffer) { super.deserialize(byteBuffer); int size = ReadWriteIOUtils.readInt(byteBuffer); - this.datanodes = new ArrayList<>(); + this.datanodes = new ArrayList<>(size); for (int i = 0; i < size; i++) { TDataNodeConfiguration datanode = ThriftCommonsSerDeUtils.deserializeTDataNodeConfiguration(byteBuffer); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/twostage/exchange/payload/FetchCombineResultRequest.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/twostage/exchange/payload/FetchCombineResultRequest.java index 03f8721f17b..97d6c4503e6 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/twostage/exchange/payload/FetchCombineResultRequest.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/twostage/exchange/payload/FetchCombineResultRequest.java @@ -91,8 +91,8 @@ public class FetchCombineResultRequest extends TPipeTransferReq { private FetchCombineResultRequest translateFromTPipeTransferReq(TPipeTransferReq transferReq) { pipeName = ReadWriteIOUtils.readString(transferReq.body); creationTime = ReadWriteIOUtils.readLong(transferReq.body); - combineIdList = new ArrayList<>(); final int combineIdListSize = ReadWriteIOUtils.readInt(transferReq.body); + combineIdList = new ArrayList<>(combineIdListSize); for (int i = 0; i < combineIdListSize; i++) { combineIdList.add(ReadWriteIOUtils.readString(transferReq.body)); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/TimeseriesContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/TimeseriesContext.java index ecad26bac00..143cdacb798 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/TimeseriesContext.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/TimeseriesContext.java @@ -22,6 +22,7 @@ package org.apache.iotdb.db.queryengine.common; import org.apache.iotdb.db.queryengine.common.schematree.IMeasurementSchemaInfo; import org.apache.iotdb.db.schemaengine.schemaregion.utils.MetaUtils; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.Pair; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -389,7 +390,8 @@ public class TimeseriesContext { int activeCountMultiplier = ReadWriteIOUtils.readInt(buffer); boolean logicalView = ReadWriteIOUtils.readBool(buffer); int activeLogicalViewContextMapSize = ReadWriteIOUtils.readInt(buffer); - Map<String, TimeseriesContext> activeLogicalViewContextMap = new HashMap<>(); + Map<String, TimeseriesContext> activeLogicalViewContextMap = + Maps.newHashMapWithExpectedSize(activeLogicalViewContextMapSize); for (int i = 0; i < activeLogicalViewContextMapSize; i++) { activeLogicalViewContextMap.put( ReadWriteIOUtils.readString(buffer), TimeseriesContext.deserialize(buffer)); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java index dfaf4aa1b48..1f18a6543a7 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java @@ -164,8 +164,6 @@ public class FragmentInstanceFailureInfo implements Serializable { public static FragmentInstanceFailureInfo deserialize(ByteBuffer byteBuffer) { final String message = ReadWriteIOUtils.readString(byteBuffer); FragmentInstanceFailureInfo cause; - List<FragmentInstanceFailureInfo> suppressed = new ArrayList<>(); - List<String> stack = new ArrayList<>(); int flag = ReadWriteIOUtils.readInt(byteBuffer); if (flag == 0) { cause = null; @@ -173,10 +171,12 @@ public class FragmentInstanceFailureInfo implements Serializable { cause = deserialize(byteBuffer); } int suppressedSize = ReadWriteIOUtils.readInt(byteBuffer); + List<FragmentInstanceFailureInfo> suppressed = new ArrayList<>(suppressedSize); for (int i = 0; i < suppressedSize; i++) { suppressed.add(deserialize(byteBuffer)); } int stackSize = ReadWriteIOUtils.readInt(byteBuffer); + List<String> stack = new ArrayList<>(stackSize); for (int i = 0; i < stackSize; i++) { stack.add(ReadWriteIOUtils.readString(byteBuffer)); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java index 73f77e826e7..a14937c6286 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java @@ -148,7 +148,9 @@ public class FilterAndProjectOperator implements ProcessOperator { final TimeColumnBuilder timeBuilder = filterTsBlockBuilder.getTimeColumnBuilder(); final ColumnBuilder[] columnBuilders = filterTsBlockBuilder.getValueColumnBuilders(); - List<Column> resultColumns = new ArrayList<>(); + List<Column> resultColumns = + new ArrayList<>( + input.getValueColumnCount() + (hasNonMappableUDF ? 0 : commonTransformerList.size())); for (int i = 0, n = input.getValueColumnCount(); i < n; i++) { resultColumns.add(input.getColumn(i)); } @@ -213,7 +215,7 @@ public class FilterAndProjectOperator implements ProcessOperator { leafColumnTransformer.initFromTsBlock(input); } - List<Column> resultColumns = new ArrayList<>(); + List<Column> resultColumns = new ArrayList<>(projectOutputTransformerList.size()); for (ColumnTransformer columnTransformer : projectOutputTransformerList) { columnTransformer.tryEvaluate(); resultColumns.add(columnTransformer.getColumn()); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java index e5ae29f0c4a..d10135259d2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java @@ -289,7 +289,7 @@ public class TransformOperator implements ProcessOperator { protected void prepareTsBlockBuilder(TsBlockBuilder tsBlockBuilder) { if (outputDataTypes == null) { - outputDataTypes = new ArrayList<>(); + outputDataTypes = new ArrayList<>(transformers.length); for (LayerReader reader : transformers) { outputDataTypes.add(reader.getDataTypes()[0]); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedInfo.java index 8241bf11005..07808fe8c8b 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedInfo.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedInfo.java @@ -390,14 +390,14 @@ public class TemplatedInfo { public static TemplatedInfo deserialize(ByteBuffer byteBuffer) { int measurementSize = ReadWriteIOUtils.readInt(byteBuffer); - List<String> measurementList = new ArrayList<>(); + List<String> measurementList = new ArrayList<>(measurementSize); int cnt = measurementSize; while (cnt-- > 0) { measurementList.add(ReadWriteIOUtils.readString(byteBuffer)); } cnt = measurementSize; - List<IMeasurementSchema> measurementSchemaList = new ArrayList<>(); + List<IMeasurementSchema> measurementSchemaList = new ArrayList<>(measurementSize); while (cnt-- > 0) { // MeasurementSchema is ok? measurementSchemaList.add(MeasurementSchema.deserializeFrom(byteBuffer)); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java index ef26583119e..0b12a95a247 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java @@ -19,6 +19,7 @@ package org.apache.iotdb.db.queryengine.plan.analyze; +import com.google.common.collect.Maps; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.utils.ReadWriteIOUtils; import org.apache.tsfile.write.schema.IMeasurementSchema; @@ -109,7 +110,7 @@ public class TypeProvider { public static TypeProvider deserialize(ByteBuffer byteBuffer) { int mapSize = ReadWriteIOUtils.readInt(byteBuffer); - Map<String, TSDataType> typeMap = new HashMap<>(); + Map<String, TSDataType> typeMap = Maps.newHashMapWithExpectedSize(mapSize); while (mapSize > 0) { typeMap.put( ReadWriteIOUtils.readString(byteBuffer), diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java index 27ff875efd0..5e8c0917e75 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java @@ -109,7 +109,7 @@ public class FunctionExpression extends Expression { functionAttributes = ReadWriteIOUtils.readLinkedHashMap(byteBuffer); int expressionSize = ReadWriteIOUtils.readInt(byteBuffer); - expressions = new ArrayList<>(); + expressions = new ArrayList<>(expressionSize); for (int i = 0; i < expressionSize; i++) { expressions.add(Expression.deserialize(byteBuffer)); } @@ -304,7 +304,7 @@ public class FunctionExpression extends Expression { public List<PartialPath> getPaths() { if (paths == null) { - paths = new ArrayList<>(); + paths = new ArrayList<>(expressions.size()); for (Expression expression : expressions) { paths.add( expression instanceof TimeSeriesOperand diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java index 6c871be905f..560c13dbc34 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java @@ -379,8 +379,10 @@ public class ColumnTransformerVisitor context.inputDataTypes.add(context.getType(caseWhenThenExpression)); context.cache.put(caseWhenThenExpression, identity); } else { - List<ColumnTransformer> whenList = new ArrayList<>(); - List<ColumnTransformer> thenList = new ArrayList<>(); + List<ColumnTransformer> whenList = + new ArrayList<>(caseWhenThenExpression.getWhenThenExpressions().size()); + List<ColumnTransformer> thenList = + new ArrayList<>(caseWhenThenExpression.getWhenThenExpressions().size()); for (WhenThenExpression whenThenExpression : caseWhenThenExpression.getWhenThenExpressions()) { whenList.add(this.process(whenThenExpression.getWhen(), context)); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java index f8bb7b8dbe7..c1e0555b33c 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java @@ -78,7 +78,7 @@ public class CompleteMeasurementSchemaVisitor extends ExpressionVisitor<Expressi public Expression visitFunctionExpression( FunctionExpression functionExpression, ISchemaTree schemaTree) { List<Expression> children = functionExpression.getExpressions(); - List<Expression> replacedChildren = new ArrayList<>(); + List<Expression> replacedChildren = new ArrayList<>(children.size()); for (Expression child : children) { replacedChildren.add(this.process(child, schemaTree)); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java index ff96ab0020d..92f351e25a4 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java @@ -413,7 +413,8 @@ public class IntermediateLayerVisitor private IntermediateLayer constructUdfInputIntermediateLayer( FunctionExpression functionExpression, IntermediateLayerVisitorContext context) { - List<IntermediateLayer> intermediateLayers = new ArrayList<>(); + List<IntermediateLayer> intermediateLayers = + new ArrayList<>(functionExpression.getExpressions().size()); for (Expression expression : functionExpression.getExpressions()) { intermediateLayers.add(this.process(expression, context)); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java index fc964afc029..21a3076c2ba 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java @@ -30,6 +30,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType; import org.apache.iotdb.db.schemaengine.template.Template; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import jakarta.validation.constraints.NotNull; @@ -37,7 +38,6 @@ import jakarta.validation.constraints.NotNull; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -150,7 +150,7 @@ public class LevelTimeSeriesCountNode extends SchemaQueryScanNode { SchemaFilter schemaFilter = SchemaFilter.deserialize(buffer); boolean includeSystemDatabase = ReadWriteIOUtils.readBool(buffer); int templateNum = ReadWriteIOUtils.readInt(buffer); - Map<Integer, Template> templateMap = new HashMap<>(); + Map<Integer, Template> templateMap = Maps.newHashMapWithExpectedSize(templateNum); Template template; for (int i = 0; i < templateNum; i++) { template = new Template(); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SeriesSchemaFetchScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SeriesSchemaFetchScanNode.java index f24cbbd9596..e6a3e926650 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SeriesSchemaFetchScanNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SeriesSchemaFetchScanNode.java @@ -29,12 +29,12 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeUtil; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor; import org.apache.iotdb.db.schemaengine.template.Template; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.HashMap; import java.util.Map; /** This class defines the scan task of schema fetcher. */ @@ -130,7 +130,7 @@ public class SeriesSchemaFetchScanNode extends SchemaFetchScanNode { PathPatternTree patternTree = PathPatternTree.deserialize(byteBuffer); int templateNum = ReadWriteIOUtils.readInt(byteBuffer); - Map<Integer, Template> templateMap = new HashMap<>(); + Map<Integer, Template> templateMap = Maps.newHashMapWithExpectedSize(templateNum); Template template; for (int i = 0; i < templateNum; i++) { template = new Template(); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java index e6ad4b02572..b9fe8e7922b 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java @@ -30,6 +30,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType; import org.apache.iotdb.db.schemaengine.template.Template; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import jakarta.validation.constraints.NotNull; @@ -37,7 +38,6 @@ import jakarta.validation.constraints.NotNull; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -143,7 +143,7 @@ public class TimeSeriesCountNode extends SchemaQueryScanNode { boolean includeSystemDatabase = ReadWriteIOUtils.readBool(buffer); int templateNum = ReadWriteIOUtils.readInt(buffer); - Map<Integer, Template> templateMap = new HashMap<>(); + Map<Integer, Template> templateMap = Maps.newHashMapWithExpectedSize(templateNum); Template template; for (int i = 0; i < templateNum; i++) { template = new Template(); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java index e1e7986b90e..598108896e4 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java @@ -29,6 +29,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType; import org.apache.iotdb.db.schemaengine.template.Template; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import jakarta.validation.constraints.NotNull; @@ -36,7 +37,6 @@ import jakarta.validation.constraints.NotNull; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -121,7 +121,7 @@ public class TimeSeriesSchemaScanNode extends SchemaQueryScanNode { boolean isPrefixPath = ReadWriteIOUtils.readBool(byteBuffer); int templateNum = ReadWriteIOUtils.readInt(byteBuffer); - Map<Integer, Template> templateMap = new HashMap<>(); + Map<Integer, Template> templateMap = Maps.newHashMapWithExpectedSize(templateNum); Template template; for (int i = 0; i < templateNum; i++) { template = new Template(); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java index 1fda758e775..75dfb3026f2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java @@ -151,7 +151,7 @@ public class CreateAlignedTimeSeriesNode extends WritePlanNode @Override public List<Long> getTagOffsets() { if (tagOffsets == null) { - tagOffsets = new ArrayList<>(); + tagOffsets = new ArrayList<>(measurements.size()); for (int i = 0; i < measurements.size(); i++) { tagOffsets.add(Long.parseLong("-1")); } @@ -217,30 +217,30 @@ public class CreateAlignedTimeSeriesNode extends WritePlanNode throw new IllegalArgumentException("Can not deserialize CreateAlignedTimeSeriesNode", e); } - measurements = new ArrayList<>(); int size = byteBuffer.getInt(); + measurements = new ArrayList<>(size); for (int i = 0; i < size; i++) { measurements.add(ReadWriteIOUtils.readString(byteBuffer)); } - dataTypes = new ArrayList<>(); + dataTypes = new ArrayList<>(size); for (int i = 0; i < size; i++) { dataTypes.add(TSDataType.values()[byteBuffer.get()]); } - encodings = new ArrayList<>(); + encodings = new ArrayList<>(size); for (int i = 0; i < size; i++) { encodings.add(TSEncoding.values()[byteBuffer.get()]); } - compressors = new ArrayList<>(); + compressors = new ArrayList<>(size); for (int i = 0; i < size; i++) { compressors.add(CompressionType.deserialize(byteBuffer.get())); } byte label = byteBuffer.get(); if (label >= 0) { - aliasList = new ArrayList<>(); + aliasList = new ArrayList<>(label == 1 ? size : 0); if (label == 1) { for (int i = 0; i < size; i++) { aliasList.add(ReadWriteIOUtils.readString(byteBuffer)); @@ -250,7 +250,7 @@ public class CreateAlignedTimeSeriesNode extends WritePlanNode label = byteBuffer.get(); if (label >= 0) { - tagsList = new ArrayList<>(); + tagsList = new ArrayList<>(label == 1 ? size : 0); if (label == 1) { for (int i = 0; i < size; i++) { tagsList.add(ReadWriteIOUtils.readMap(byteBuffer)); @@ -260,7 +260,7 @@ public class CreateAlignedTimeSeriesNode extends WritePlanNode label = byteBuffer.get(); if (label >= 0) { - attributesList = new ArrayList<>(); + attributesList = new ArrayList<>(label == 1 ? size : 0); if (label == 1) { for (int i = 0; i < size; i++) { attributesList.add(ReadWriteIOUtils.readMap(byteBuffer)); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateMultiTimeSeriesNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateMultiTimeSeriesNode.java index 94d3e407fb5..84b4d16d874 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateMultiTimeSeriesNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateMultiTimeSeriesNode.java @@ -30,6 +30,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode; +import com.google.common.collect.Maps; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.exception.NotImplementedException; import org.apache.tsfile.file.metadata.enums.CompressionType; @@ -164,8 +165,8 @@ public class CreateMultiTimeSeriesNode extends WritePlanNode { } public static CreateMultiTimeSeriesNode deserialize(ByteBuffer byteBuffer) { - Map<PartialPath, MeasurementGroup> measurementGroupMap = new HashMap<>(); int size = byteBuffer.getInt(); + Map<PartialPath, MeasurementGroup> measurementGroupMap = Maps.newHashMapWithExpectedSize(size); PartialPath devicePath; MeasurementGroup measurementGroup; for (int i = 0; i < size; i++) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/MeasurementGroup.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/MeasurementGroup.java index 9557e9c3279..d89c3f0fff9 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/MeasurementGroup.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/MeasurementGroup.java @@ -341,31 +341,31 @@ public class MeasurementGroup { } public void deserialize(ByteBuffer byteBuffer) { - measurements = new ArrayList<>(); int size = byteBuffer.getInt(); + measurements = new ArrayList<>(size); for (int i = 0; i < size; i++) { measurements.add(ReadWriteIOUtils.readString(byteBuffer)); } measurementSet.addAll(measurements); - dataTypes = new ArrayList<>(); + dataTypes = new ArrayList<>(size); for (int i = 0; i < size; i++) { dataTypes.add(TSDataType.values()[byteBuffer.get()]); } - encodings = new ArrayList<>(); + encodings = new ArrayList<>(size); for (int i = 0; i < size; i++) { encodings.add(TSEncoding.values()[byteBuffer.get()]); } - compressors = new ArrayList<>(); + compressors = new ArrayList<>(size); for (int i = 0; i < size; i++) { compressors.add(CompressionType.deserialize(byteBuffer.get())); } byte label = byteBuffer.get(); if (label >= 0) { - aliasList = new ArrayList<>(); + aliasList = new ArrayList<>(label == 1 ? size : 0); if (label == 1) { for (int i = 0; i < size; i++) { aliasList.add(ReadWriteIOUtils.readString(byteBuffer)); @@ -375,7 +375,7 @@ public class MeasurementGroup { label = byteBuffer.get(); if (label >= 0) { - tagsList = new ArrayList<>(); + tagsList = new ArrayList<>(label == 1 ? size : 0); if (label == 1) { for (int i = 0; i < size; i++) { tagsList.add(ReadWriteIOUtils.readMap(byteBuffer)); @@ -385,7 +385,7 @@ public class MeasurementGroup { label = byteBuffer.get(); if (label >= 0) { - attributesList = new ArrayList<>(); + attributesList = new ArrayList<>(label == 1 ? size : 0); if (label == 1) { for (int i = 0; i < size; i++) { attributesList.add(ReadWriteIOUtils.readMap(byteBuffer)); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/AlterLogicalViewNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/AlterLogicalViewNode.java index 7300684ef0a..d0f6e7dfa50 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/AlterLogicalViewNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/AlterLogicalViewNode.java @@ -31,6 +31,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor; import org.apache.iotdb.rpc.TSStatusCode; +import com.google.common.collect.Maps; import org.apache.tsfile.exception.NotImplementedException; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -38,7 +39,6 @@ import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -158,8 +158,9 @@ public class AlterLogicalViewNode extends PlanNode { public static AlterLogicalViewNode deserialize(final ByteBuffer byteBuffer) { // deserialize member variables - final Map<PartialPath, ViewExpression> viewPathToSourceMap = new HashMap<>(); final int size = byteBuffer.getInt(); + final Map<PartialPath, ViewExpression> viewPathToSourceMap = + Maps.newHashMapWithExpectedSize(size); PartialPath path; ViewExpression viewExpression; for (int i = 0; i < size; i++) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/CreateLogicalViewNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/CreateLogicalViewNode.java index 25ba8ec288b..9afc5a3cea6 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/CreateLogicalViewNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/CreateLogicalViewNode.java @@ -33,6 +33,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode; import org.apache.iotdb.db.schemaengine.schemaregion.view.visitor.GetSourcePathsVisitor; import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.ICreateLogicalViewPlan; +import com.google.common.collect.Maps; import org.apache.tsfile.exception.NotImplementedException; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -85,7 +86,7 @@ public class CreateLogicalViewNode extends WritePlanNode implements ICreateLogic if (paths.size() != expressions.size()) { return null; } - Map<PartialPath, ViewExpression> result = new HashMap<>(); + Map<PartialPath, ViewExpression> result = Maps.newHashMapWithExpectedSize(paths.size()); for (int i = 0; i < paths.size(); i++) { result.put(paths.get(i), expressions.get(i)); } @@ -205,8 +206,8 @@ public class CreateLogicalViewNode extends WritePlanNode implements ICreateLogic public static CreateLogicalViewNode deserialize(ByteBuffer byteBuffer) { // deserialize member variables - Map<PartialPath, ViewExpression> viewPathToSourceMap = new HashMap<>(); int size = byteBuffer.getInt(); + Map<PartialPath, ViewExpression> viewPathToSourceMap = Maps.newHashMapWithExpectedSize(size); PartialPath path; ViewExpression viewExpression; for (int i = 0; i < size; i++) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationMergeSortNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationMergeSortNode.java index a5d73bd3875..5b60c5c728a 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationMergeSortNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationMergeSortNode.java @@ -146,7 +146,7 @@ public class AggregationMergeSortNode extends MultiChildProcessNode { public static AggregationMergeSortNode deserialize(ByteBuffer byteBuffer) { OrderByParameter orderByParameter = OrderByParameter.deserialize(byteBuffer); int columnSize = ReadWriteIOUtils.readInt(byteBuffer); - List<String> outputColumns = new ArrayList<>(); + List<String> outputColumns = new ArrayList<>(columnSize); while (columnSize > 0) { outputColumns.add(ReadWriteIOUtils.readString(byteBuffer)); columnSize--; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationNode.java index 83411d62678..96f3759bc9d 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationNode.java @@ -279,7 +279,7 @@ public class AggregationNode extends MultiChildProcessNode { public static AggregationNode deserialize(ByteBuffer byteBuffer) { int descriptorSize = ReadWriteIOUtils.readInt(byteBuffer); - List<AggregationDescriptor> aggregationDescriptorList = new ArrayList<>(); + List<AggregationDescriptor> aggregationDescriptorList = new ArrayList<>(descriptorSize); while (descriptorSize > 0) { aggregationDescriptorList.add(AggregationDescriptor.deserialize(byteBuffer)); descriptorSize--; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceMergeNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceMergeNode.java index 799708d859b..891f7e96178 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceMergeNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceMergeNode.java @@ -112,7 +112,7 @@ public class DeviceMergeNode extends MultiChildProcessNode { public static DeviceMergeNode deserialize(ByteBuffer byteBuffer) { OrderByParameter mergeOrderParameter = OrderByParameter.deserialize(byteBuffer); int devicesSize = ReadWriteIOUtils.readInt(byteBuffer); - List<String> devices = new ArrayList<>(); + List<String> devices = new ArrayList<>(devicesSize); while (devicesSize > 0) { devices.add(ReadWriteIOUtils.readString(byteBuffer)); devicesSize--; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceViewNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceViewNode.java index b6114e1f127..6a3e13ca886 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceViewNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceViewNode.java @@ -25,13 +25,13 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor; import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.OrderByParameter; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -178,21 +178,22 @@ public class DeviceViewNode extends MultiChildProcessNode { OrderByParameter mergeOrderParameter = OrderByParameter.deserialize(byteBuffer); int columnSize = ReadWriteIOUtils.readInt(byteBuffer); - List<String> outputColumnNames = new ArrayList<>(); + List<String> outputColumnNames = new ArrayList<>(columnSize); while (columnSize > 0) { outputColumnNames.add(ReadWriteIOUtils.readString(byteBuffer)); columnSize--; } int devicesSize = ReadWriteIOUtils.readInt(byteBuffer); - List<String> devices = new ArrayList<>(); + List<String> devices = new ArrayList<>(devicesSize); while (devicesSize > 0) { devices.add(ReadWriteIOUtils.readString(byteBuffer)); devicesSize--; } int mapSize = ReadWriteIOUtils.readInt(byteBuffer); - Map<String, List<Integer>> deviceToMeasurementIndexesMap = new HashMap<>(mapSize); + Map<String, List<Integer>> deviceToMeasurementIndexesMap = + Maps.newHashMapWithExpectedSize(mapSize); while (mapSize > 0) { String deviceName = ReadWriteIOUtils.readString(byteBuffer); int listSize = ReadWriteIOUtils.readInt(byteBuffer); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByLevelNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByLevelNode.java index e2212e8794a..0b2d2c77981 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByLevelNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByLevelNode.java @@ -162,7 +162,8 @@ public class GroupByLevelNode extends MultiChildProcessNode { public static GroupByLevelNode deserialize(ByteBuffer byteBuffer) { int descriptorSize = ReadWriteIOUtils.readInt(byteBuffer); - List<CrossSeriesAggregationDescriptor> groupByLevelDescriptors = new ArrayList<>(); + List<CrossSeriesAggregationDescriptor> groupByLevelDescriptors = + new ArrayList<>(descriptorSize); while (descriptorSize > 0) { groupByLevelDescriptors.add(CrossSeriesAggregationDescriptor.deserialize(byteBuffer)); descriptorSize--; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByTagNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByTagNode.java index fa6b210b63d..1ca33e9cb42 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByTagNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByTagNode.java @@ -27,6 +27,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.CrossSeriesAg import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter; import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering; +import com.google.common.collect.Maps; import org.apache.commons.lang3.Validate; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -36,7 +37,6 @@ import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -251,11 +251,12 @@ public class GroupByTagNode extends MultiChildProcessNode { // Tag values to aggregation descriptors. int numOfEntries = ReadWriteIOUtils.readInt(byteBuffer); Map<List<String>, List<CrossSeriesAggregationDescriptor>> tagValuesToAggregationDescriptors = - new HashMap<>(); + Maps.newHashMapWithExpectedSize(numOfEntries); while (numOfEntries > 0) { List<String> tagValues = ReadWriteIOUtils.readStringList(byteBuffer); - List<CrossSeriesAggregationDescriptor> aggregationDescriptors = new ArrayList<>(); int numOfAggregationDescriptors = ReadWriteIOUtils.readInt(byteBuffer); + List<CrossSeriesAggregationDescriptor> aggregationDescriptors = + new ArrayList<>(numOfAggregationDescriptors); while (numOfAggregationDescriptors > 0) { byte isNotNull = ReadWriteIOUtils.readByte(byteBuffer); if (isNotNull == 1) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/MergeSortNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/MergeSortNode.java index bcc54344a35..47b8996a94e 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/MergeSortNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/MergeSortNode.java @@ -112,7 +112,7 @@ public class MergeSortNode extends MultiChildProcessNode { public static MergeSortNode deserialize(ByteBuffer byteBuffer) { OrderByParameter orderByParameter = OrderByParameter.deserialize(byteBuffer); int columnSize = ReadWriteIOUtils.readInt(byteBuffer); - List<String> outputColumns = new ArrayList<>(); + List<String> outputColumns = new ArrayList<>(columnSize); while (columnSize > 0) { outputColumns.add(ReadWriteIOUtils.readString(byteBuffer)); columnSize--; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ProjectNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ProjectNode.java index 2f13ea6d6de..e9dd32d8ecf 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ProjectNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ProjectNode.java @@ -92,7 +92,7 @@ public class ProjectNode extends SingleChildProcessNode { public static ProjectNode deserialize(ByteBuffer byteBuffer) { int outputColumnNamesSize = ReadWriteIOUtils.readInt(byteBuffer); - List<String> outputColumnNames = new ArrayList<>(); + List<String> outputColumnNames = new ArrayList<>(outputColumnNamesSize); while (outputColumnNamesSize > 0) { outputColumnNames.add(ReadWriteIOUtils.readString(byteBuffer)); outputColumnNamesSize--; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/RawDataAggregationNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/RawDataAggregationNode.java index 066de467c14..f92c966a3c4 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/RawDataAggregationNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/RawDataAggregationNode.java @@ -273,7 +273,7 @@ public class RawDataAggregationNode extends SingleChildProcessNode { public static RawDataAggregationNode deserialize(ByteBuffer byteBuffer) { int descriptorSize = ReadWriteIOUtils.readInt(byteBuffer); - List<AggregationDescriptor> aggregationDescriptorList = new ArrayList<>(); + List<AggregationDescriptor> aggregationDescriptorList = new ArrayList<>(descriptorSize); while (descriptorSize > 0) { aggregationDescriptorList.add(AggregationDescriptor.deserialize(byteBuffer)); descriptorSize--; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SingleDeviceViewNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SingleDeviceViewNode.java index 263223c5d5c..555ecdb9942 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SingleDeviceViewNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SingleDeviceViewNode.java @@ -156,7 +156,7 @@ public class SingleDeviceViewNode extends SingleChildProcessNode { List<String> outputColumnNames = null; if (cacheOutputColumnNames) { int columnSize = ReadWriteIOUtils.readInt(byteBuffer); - outputColumnNames = new ArrayList<>(); + outputColumnNames = new ArrayList<>(columnSize); while (columnSize > 0) { outputColumnNames.add(ReadWriteIOUtils.readString(byteBuffer)); columnSize--; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SlidingWindowAggregationNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SlidingWindowAggregationNode.java index cf4646c9c10..e74ed1191a5 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SlidingWindowAggregationNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SlidingWindowAggregationNode.java @@ -170,7 +170,7 @@ public class SlidingWindowAggregationNode extends SingleChildProcessNode { public static SlidingWindowAggregationNode deserialize(ByteBuffer byteBuffer) { int descriptorSize = ReadWriteIOUtils.readInt(byteBuffer); - List<AggregationDescriptor> aggregationDescriptorList = new ArrayList<>(); + List<AggregationDescriptor> aggregationDescriptorList = new ArrayList<>(descriptorSize); while (descriptorSize > 0) { aggregationDescriptorList.add(AggregationDescriptor.deserialize(byteBuffer)); descriptorSize--; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TopKNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TopKNode.java index 27b7d34cea3..2f75d3bbab9 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TopKNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TopKNode.java @@ -129,7 +129,7 @@ public class TopKNode extends MultiChildProcessNode { int topValue = ReadWriteIOUtils.readInt(byteBuffer); OrderByParameter orderByParameter = OrderByParameter.deserialize(byteBuffer); int columnSize = ReadWriteIOUtils.readInt(byteBuffer); - List<String> outputColumns = new ArrayList<>(); + List<String> outputColumns = new ArrayList<>(columnSize); while (columnSize > 0) { outputColumns.add(ReadWriteIOUtils.readString(byteBuffer)); columnSize--; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TransformNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TransformNode.java index 2ca198dd2b8..b992fe29c34 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TransformNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TransformNode.java @@ -68,7 +68,7 @@ public class TransformNode extends SingleChildProcessNode { @Override public final List<String> getOutputColumnNames() { if (outputColumnNames == null) { - outputColumnNames = new ArrayList<>(); + outputColumnNames = new ArrayList<>(outputExpressions.length); for (Expression expression : outputExpressions) { outputColumnNames.add(expression.getExpressionString()); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java index 46e7ae5aa6b..f4ca4fa07aa 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java @@ -100,7 +100,7 @@ public class IdentitySinkNode extends MultiChildrenSinkNode { public static IdentitySinkNode deserialize(ByteBuffer byteBuffer) { int size = ReadWriteIOUtils.readInt(byteBuffer); - List<DownStreamChannelLocation> downStreamChannelLocationList = new ArrayList<>(); + List<DownStreamChannelLocation> downStreamChannelLocationList = new ArrayList<>(size); for (int i = 0; i < size; i++) { downStreamChannelLocationList.add(DownStreamChannelLocation.deserialize(byteBuffer)); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java index ec32f13b378..e173355aef0 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java @@ -99,7 +99,7 @@ public class ShuffleSinkNode extends MultiChildrenSinkNode { public static ShuffleSinkNode deserialize(ByteBuffer byteBuffer) { int size = ReadWriteIOUtils.readInt(byteBuffer); - List<DownStreamChannelLocation> downStreamChannelLocationList = new ArrayList<>(); + List<DownStreamChannelLocation> downStreamChannelLocationList = new ArrayList<>(size); for (int i = 0; i < size; i++) { downStreamChannelLocationList.add(DownStreamChannelLocation.deserialize(byteBuffer)); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java index d81ca0c92bd..9cdec32cde0 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java @@ -248,7 +248,8 @@ public class AlignedSeriesAggregationScanNode extends SeriesAggregationSourceNod public static AlignedSeriesAggregationScanNode deserialize(ByteBuffer byteBuffer) { AlignedPath alignedPath = (AlignedPath) PathDeserializeUtil.deserialize(byteBuffer); int aggregateDescriptorSize = ReadWriteIOUtils.readInt(byteBuffer); - List<AggregationDescriptor> aggregationDescriptorList = new ArrayList<>(); + List<AggregationDescriptor> aggregationDescriptorList = + new ArrayList<>(aggregateDescriptorSize); for (int i = 0; i < aggregateDescriptorSize; i++) { aggregationDescriptorList.add(AggregationDescriptor.deserialize(byteBuffer)); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java index 327899e4bf6..3f8a615a105 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java @@ -130,7 +130,7 @@ public class AlignedSeriesScanNode extends SeriesScanSourceNode { @Override public List<String> getOutputColumnNames() { - List<String> outputColumnNames = new ArrayList<>(); + List<String> outputColumnNames = new ArrayList<>(alignedPath.getMeasurementList().size()); String deviceName = alignedPath.getDevice(); for (String measurement : alignedPath.getMeasurementList()) { outputColumnNames.add(deviceName.concat(TsFileConstant.PATH_SEPARATOR + measurement)); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/DeviceRegionScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/DeviceRegionScanNode.java index a4db348342b..eba282a4bd2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/DeviceRegionScanNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/DeviceRegionScanNode.java @@ -32,6 +32,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeUtil; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; @@ -102,7 +103,7 @@ public class DeviceRegionScanNode extends RegionScanNode { public static PlanNode deserialize(ByteBuffer buffer) { int size = ReadWriteIOUtils.readInt(buffer); - Map<PartialPath, DeviceContext> devicePathToContextMap = new HashMap<>(); + Map<PartialPath, DeviceContext> devicePathToContextMap = Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; i++) { PartialPath path = (PartialPath) PathDeserializeUtil.deserialize(buffer); devicePathToContextMap.put(path, DeviceContext.deserialize(buffer)); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java index 54a186b98ce..8178cc19b57 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java @@ -238,7 +238,8 @@ public class SeriesAggregationScanNode extends SeriesAggregationSourceNode { public static SeriesAggregationScanNode deserialize(ByteBuffer byteBuffer) { MeasurementPath partialPath = (MeasurementPath) PathDeserializeUtil.deserialize(byteBuffer); int aggregateDescriptorSize = ReadWriteIOUtils.readInt(byteBuffer); - List<AggregationDescriptor> aggregationDescriptorList = new ArrayList<>(); + List<AggregationDescriptor> aggregationDescriptorList = + new ArrayList<>(aggregateDescriptorSize); for (int i = 0; i < aggregateDescriptorSize; i++) { aggregationDescriptorList.add(AggregationDescriptor.deserialize(byteBuffer)); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/TimeseriesRegionScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/TimeseriesRegionScanNode.java index d905c8eca2c..2e2e7cb2c23 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/TimeseriesRegionScanNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/TimeseriesRegionScanNode.java @@ -35,6 +35,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import org.apache.tsfile.write.schema.IMeasurementSchema; import org.apache.tsfile.write.schema.MeasurementSchema; @@ -132,7 +133,7 @@ public class TimeseriesRegionScanNode extends RegionScanNode { public static PlanNode deserialize(ByteBuffer buffer) { int size = ReadWriteIOUtils.readInt(buffer); Map<PartialPath, Map<PartialPath, List<TimeseriesContext>>> deviceToTimeseriesSchemaInfo = - new HashMap<>(); + Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; i++) { int nodeSize = ReadWriteIOUtils.readInt(buffer); @@ -143,11 +144,12 @@ public class TimeseriesRegionScanNode extends RegionScanNode { PartialPath devicePath = new PartialPath(nodes); int pathSize = ReadWriteIOUtils.readInt(buffer); - Map<PartialPath, List<TimeseriesContext>> measurementToSchemaInfo = new HashMap<>(); + Map<PartialPath, List<TimeseriesContext>> measurementToSchemaInfo = + Maps.newHashMapWithExpectedSize(pathSize); for (int j = 0; j < pathSize; j++) { PartialPath path = deserializePartialPath(nodes, buffer); int schemaSize = ReadWriteIOUtils.readInt(buffer); - List<TimeseriesContext> schemaInfos = new ArrayList<>(); + List<TimeseriesContext> schemaInfos = new ArrayList<>(schemaSize); for (int k = 0; k < schemaSize; k++) { schemaInfos.add(TimeseriesContext.deserialize(buffer)); } @@ -311,12 +313,12 @@ public class TimeseriesRegionScanNode extends RegionScanNode { return new MeasurementPath(newNodes); } else { int size = ReadWriteIOUtils.readInt(buffer); - List<String> measurements = new ArrayList<>(); - List<IMeasurementSchema> schemaList = new ArrayList<>(); + List<String> measurements = new ArrayList<>(size); for (int i = 0; i < size; i++) { measurements.add(ReadWriteIOUtils.readString(buffer)); } size = ReadWriteIOUtils.readInt(buffer); + List<IMeasurementSchema> schemaList = new ArrayList<>(size); for (int i = 0; i < size; i++) { schemaList.add(MeasurementSchema.deserializeFrom(buffer)); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java index 773881e398e..0f48c683533 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java @@ -204,10 +204,9 @@ public class InsertMultiTabletsNode extends InsertNode { public static InsertMultiTabletsNode deserialize(ByteBuffer byteBuffer) { PlanNodeId planNodeId; - List<InsertTabletNode> insertTabletNodeList = new ArrayList<>(); - List<Integer> parentIndex = new ArrayList<>(); - int size = byteBuffer.getInt(); + List<InsertTabletNode> insertTabletNodeList = new ArrayList<>(size); + List<Integer> parentIndex = new ArrayList<>(size); for (int i = 0; i < size; i++) { InsertTabletNode insertTabletNode = new InsertTabletNode(new PlanNodeId("")); insertTabletNode.subDeserialize(byteBuffer); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java index 7ec81d626df..5b7e1fadf98 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java @@ -193,10 +193,9 @@ public class InsertRowsNode extends InsertNode implements WALEntryValue { public static InsertRowsNode deserialize(ByteBuffer byteBuffer) { PlanNodeId planNodeId; - List<InsertRowNode> insertRowNodeList = new ArrayList<>(); - List<Integer> insertRowNodeIndex = new ArrayList<>(); - int size = byteBuffer.getInt(); + List<InsertRowNode> insertRowNodeList = new ArrayList<>(size); + List<Integer> insertRowNodeIndex = new ArrayList<>(size); for (int i = 0; i < size; i++) { InsertRowNode insertRowNode = new InsertRowNode(new PlanNodeId("")); insertRowNode.subDeserialize(byteBuffer); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/model/ModelInferenceDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/model/ModelInferenceDescriptor.java index bf5f391d9e4..21937fbb9b2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/model/ModelInferenceDescriptor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/model/ModelInferenceDescriptor.java @@ -23,13 +23,13 @@ import org.apache.iotdb.common.rpc.thrift.TEndPoint; import org.apache.iotdb.commons.model.ModelInformation; import org.apache.iotdb.db.queryengine.execution.operator.window.ainode.InferenceWindowParameter; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -55,7 +55,7 @@ public class ModelInferenceDescriptor { if (outputColumnNamesSize == 0) { this.outputColumnNames = null; } else { - this.outputColumnNames = new ArrayList<>(); + this.outputColumnNames = new ArrayList<>(outputColumnNamesSize); for (int i = 0; i < outputColumnNamesSize; i++) { this.outputColumnNames.add(ReadWriteIOUtils.readString(buffer)); } @@ -70,7 +70,7 @@ public class ModelInferenceDescriptor { if (inferenceAttributesSize == 0) { this.inferenceAttributes = null; } else { - this.inferenceAttributes = new HashMap<>(); + this.inferenceAttributes = Maps.newHashMapWithExpectedSize(inferenceAttributesSize); for (int i = 0; i < inferenceAttributesSize; i++) { this.inferenceAttributes.put( ReadWriteIOUtils.readString(buffer), ReadWriteIOUtils.readString(buffer)); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/CaseWhenThenColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/CaseWhenThenColumnTransformer.java index 94156d1c71b..7e1d5bc95e1 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/CaseWhenThenColumnTransformer.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/CaseWhenThenColumnTransformer.java @@ -47,7 +47,7 @@ public class CaseWhenThenColumnTransformer extends ColumnTransformer { Validate.isTrue( whenTransformers.size() == thenTransformers.size(), "the size between whenTransformers and thenTransformers needs to be same"); - this.whenThenTransformers = new ArrayList<>(); + this.whenThenTransformers = new ArrayList<>(whenTransformers.size()); for (int i = 0; i < whenTransformers.size(); i++) { this.whenThenTransformers.add(new Pair<>(whenTransformers.get(i), thenTransformers.get(i))); } @@ -83,8 +83,8 @@ public class CaseWhenThenColumnTransformer extends ColumnTransformer { @Override protected void evaluate() { - List<Column> whenColumnList = new ArrayList<>(); - List<Column> thenColumnList = new ArrayList<>(); + List<Column> whenColumnList = new ArrayList<>(whenThenTransformers.size()); + List<Column> thenColumnList = new ArrayList<>(whenThenTransformers.size()); for (Pair<ColumnTransformer, ColumnTransformer> whenThenTransformer : whenThenTransformers) { whenThenTransformer.left.tryEvaluate(); whenThenTransformer.right.tryEvaluate(); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java index 4c8c3120e41..c246d2efdbe 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java @@ -46,6 +46,7 @@ import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IDeleteLogic import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IPreDeleteLogicalViewPlan; import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IRollbackPreDeleteLogicalViewPlan; +import com.google.common.collect.Maps; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.TSEncoding; @@ -155,31 +156,31 @@ public class SchemaRegionPlanDeserializer implements IDeserializer<ISchemaRegion } int size = ReadWriteIOUtils.readInt(buffer); - List<String> measurements = new ArrayList<>(); + List<String> measurements = new ArrayList<>(size); for (int i = 0; i < size; i++) { measurements.add(ReadWriteIOUtils.readString(buffer)); } createAlignedTimeSeriesPlan.setMeasurements(measurements); - List<TSDataType> dataTypes = new ArrayList<>(); + List<TSDataType> dataTypes = new ArrayList<>(size); for (int i = 0; i < size; i++) { dataTypes.add(TSDataType.deserialize(buffer.get())); } createAlignedTimeSeriesPlan.setDataTypes(dataTypes); - List<TSEncoding> encodings = new ArrayList<>(); + List<TSEncoding> encodings = new ArrayList<>(size); for (int i = 0; i < size; i++) { encodings.add(TSEncoding.deserialize(buffer.get())); } createAlignedTimeSeriesPlan.setEncodings(encodings); - List<CompressionType> compressors = new ArrayList<>(); + List<CompressionType> compressors = new ArrayList<>(size); for (int i = 0; i < size; i++) { compressors.add(CompressionType.deserialize(buffer.get())); } createAlignedTimeSeriesPlan.setCompressors(compressors); - List<Long> tagOffsets = new ArrayList<>(); + List<Long> tagOffsets = new ArrayList<>(size); for (int i = 0; i < size; i++) { tagOffsets.add(buffer.getLong()); } @@ -187,7 +188,7 @@ public class SchemaRegionPlanDeserializer implements IDeserializer<ISchemaRegion // alias if (buffer.get() == 1) { - List<String> aliasList = new ArrayList<>(); + List<String> aliasList = new ArrayList<>(size); for (int i = 0; i < size; i++) { aliasList.add(ReadWriteIOUtils.readString(buffer)); } @@ -196,7 +197,7 @@ public class SchemaRegionPlanDeserializer implements IDeserializer<ISchemaRegion // tags if (buffer.get() == 1) { - List<Map<String, String>> tagsList = new ArrayList<>(); + List<Map<String, String>> tagsList = new ArrayList<>(size); for (int i = 0; i < size; i++) { tagsList.add(ReadWriteIOUtils.readMap(buffer)); } @@ -205,7 +206,7 @@ public class SchemaRegionPlanDeserializer implements IDeserializer<ISchemaRegion // attributes if (buffer.get() == 1) { - List<Map<String, String>> attributesList = new ArrayList<>(); + List<Map<String, String>> attributesList = new ArrayList<>(size); for (int i = 0; i < size; i++) { attributesList.add(ReadWriteIOUtils.readMap(buffer)); } @@ -267,7 +268,7 @@ public class SchemaRegionPlanDeserializer implements IDeserializer<ISchemaRegion int pathNumber = buffer.getInt(); try { - List<PartialPath> deletePathList = new ArrayList<>(); + List<PartialPath> deletePathList = new ArrayList<>(pathNumber); for (int i = 0; i < pathNumber; i++) { deletePathList.add(new PartialPath(ReadWriteIOUtils.readString(buffer))); } @@ -349,7 +350,8 @@ public class SchemaRegionPlanDeserializer implements IDeserializer<ISchemaRegion ICreateLogicalViewPlan createLogicalViewPlan, ByteBuffer buffer) { int viewSize = buffer.getInt(); - Map<PartialPath, ViewExpression> viewPathToSourceMap = new HashMap<>(); + Map<PartialPath, ViewExpression> viewPathToSourceMap = + Maps.newHashMapWithExpectedSize(viewSize); for (int i = 0; i < viewSize; i++) { int byteSizeOfPath = buffer.getInt(); byte[] bytesOfPath = new byte[byteSizeOfPath]; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java index 1b374ae40c5..906fb97b62d 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java @@ -190,7 +190,8 @@ public abstract class AbstractMemTable implements IMemTable { String[] measurements = insertRowNode.getMeasurements(); Object[] values = insertRowNode.getValues(); - List<IMeasurementSchema> schemaList = new ArrayList<>(); + List<IMeasurementSchema> schemaList = + new ArrayList<>(measurements == null ? 0 : measurements.length); List<TSDataType> dataTypes = new ArrayList<>(); int pointsInserted = 0; for (int i = 0; measurements != null && i < measurements.length; i++) { @@ -222,7 +223,8 @@ public abstract class AbstractMemTable implements IMemTable { String[] measurements = insertRowNode.getMeasurements(); Object[] values = insertRowNode.getValues(); - List<IMeasurementSchema> schemaList = new ArrayList<>(); + List<IMeasurementSchema> schemaList = + new ArrayList<>(measurements == null ? 0 : measurements.length); List<TSDataType> dataTypes = new ArrayList<>(); int pointsInserted = 0; for (int i = 0; measurements != null && i < measurements.length; i++) { @@ -333,7 +335,11 @@ public abstract class AbstractMemTable implements IMemTable { } public void writeTabletNode(InsertTabletNode insertTabletNode, int start, int end) { - List<IMeasurementSchema> schemaList = new ArrayList<>(); + List<IMeasurementSchema> schemaList = + new ArrayList<>( + insertTabletNode.getMeasurements() == null + ? 0 + : insertTabletNode.getMeasurements().length); for (int i = 0; insertTabletNode.getMeasurements() != null && i < insertTabletNode.getMeasurements().length; i++) { @@ -356,7 +362,11 @@ public abstract class AbstractMemTable implements IMemTable { public void writeAlignedTablet(InsertTabletNode insertTabletNode, int start, int end) { - List<IMeasurementSchema> schemaList = new ArrayList<>(); + List<IMeasurementSchema> schemaList = + new ArrayList<>( + insertTabletNode.getMeasurements() == null + ? 0 + : insertTabletNode.getMeasurements().length); for (int i = 0; insertTabletNode.getMeasurements() != null && i < insertTabletNode.getMeasurements().length; i++) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java index f0a03964840..2c53a3ca916 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java @@ -1040,7 +1040,7 @@ public class AlignedWritableMemChunk extends AbstractWritableMemChunk { schemaList.add(schema); } int sortedListSize = stream.readInt(); - List<AlignedTVList> sortedList = new ArrayList<>(); + List<AlignedTVList> sortedList = new ArrayList<>(sortedListSize); for (int i = 0; i < sortedListSize; i++) { AlignedTVList tvList = AlignedTVList.deserialize(stream); sortedList.add(tvList); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java index 544819c0391..30bfdb41a42 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java @@ -526,7 +526,7 @@ public class WritableMemChunk extends AbstractWritableMemChunk { WritableMemChunk memChunk = new WritableMemChunk(); memChunk.schema = MeasurementSchema.deserializeFrom(stream); int sortedListSize = stream.readInt(); - memChunk.sortedList = new ArrayList<>(); + memChunk.sortedList = new ArrayList<>(sortedListSize); for (int i = 0; i < sortedListSize; i++) { TVList tvList = TVList.deserialize(stream); memChunk.sortedList.add(tvList); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java index 2e492647073..45db903aac4 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java @@ -27,6 +27,7 @@ import org.apache.iotdb.db.exception.load.PartitionViolationException; import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; +import com.google.common.collect.Sets; import com.google.common.util.concurrent.RateLimiter; import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.file.metadata.PlainDeviceID; @@ -42,7 +43,6 @@ import java.io.InputStream; import java.io.OutputStream; import java.nio.ByteBuffer; import java.util.Arrays; -import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Optional; @@ -198,7 +198,7 @@ public class DeviceTimeIndex implements ITimeIndex { public static Set<IDeviceID> getDevices(InputStream inputStream) throws IOException { int deviceNum = ReadWriteIOUtils.readInt(inputStream); ReadWriteIOUtils.skip(inputStream, 2L * deviceNum * ReadWriteIOUtils.LONG_LEN); - Set<IDeviceID> devices = new HashSet<>(); + Set<IDeviceID> devices = Sets.newHashSetWithExpectedSize(deviceNum); for (int i = 0; i < deviceNum; i++) { String path = DataNodeDevicePathCache.getInstance() diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/AlignedChunkData.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/AlignedChunkData.java index 1395eaa420d..fce2f0a9062 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/AlignedChunkData.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/AlignedChunkData.java @@ -451,7 +451,7 @@ public class AlignedChunkData implements ChunkData { final long dataSize = ReadWriteIOUtils.readLong(stream); final boolean needDecodeChunk = ReadWriteIOUtils.readBool(stream); final int chunkHeaderListSize = ReadWriteIOUtils.readInt(stream); - final List<ChunkHeader> chunkHeaderList = new ArrayList<>(); + final List<ChunkHeader> chunkHeaderList = new ArrayList<>(chunkHeaderListSize); for (int i = 0; i < chunkHeaderListSize; i++) { final byte chunkType = ReadWriteIOUtils.readByte(stream); ChunkHeader chunkHeader = ChunkHeader.deserializeFrom(stream, chunkType); @@ -459,7 +459,7 @@ public class AlignedChunkData implements ChunkData { chunkHeader.setMeasurementID(MEASUREMENT_ID_CACHE.get(measurementID, m -> m)); chunkHeaderList.add(chunkHeader); } - final List<Integer> pageNumbers = new ArrayList<>(); + final List<Integer> pageNumbers = new ArrayList<>(needDecodeChunk ? chunkHeaderListSize : 0); if (needDecodeChunk) { for (int i = 0; i < chunkHeaderListSize; i++) { pageNumbers.add(ReadWriteIOUtils.readInt(stream)); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/strategy/RandomOnDiskUsableSpaceStrategy.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/strategy/RandomOnDiskUsableSpaceStrategy.java index cf4b911c0bb..8cc6eabd8cd 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/strategy/RandomOnDiskUsableSpaceStrategy.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/strategy/RandomOnDiskUsableSpaceStrategy.java @@ -55,7 +55,7 @@ public class RandomOnDiskUsableSpaceStrategy extends DirectoryStrategy { /** get space list of all folders. */ public List<Long> getFolderUsableSpaceList() { - List<Long> spaceList = new ArrayList<>(); + List<Long> spaceList = new ArrayList<>(folders.size()); for (int i = 0; i < folders.size(); i++) { String folder = folders.get(i); spaceList.add(JVMCommonUtils.getUsableSpace(folder)); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/DiskSpiller.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/DiskSpiller.java index c27b176bd9f..1999d220e1c 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/DiskSpiller.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/DiskSpiller.java @@ -142,7 +142,7 @@ public class DiskSpiller { } private List<String> getFilePaths() { - List<String> filePaths = new ArrayList<>(); + List<String> filePaths = new ArrayList<>(fileIndex); for (int i = 0; i < fileIndex; i++) { filePaths.add(filePrefix + String.format("%05d", i) + FILE_SUFFIX); } @@ -151,7 +151,7 @@ public class DiskSpiller { public List<SortReader> getReaders(SortBufferManager sortBufferManager) throws IoTDBException { List<String> filePaths = getFilePaths(); - List<SortReader> sortReaders = new ArrayList<>(); + List<SortReader> sortReaders = new ArrayList<>(filePaths.size()); try { for (String filePath : filePaths) { sortReaders.add(new FileSpillerReader(filePath, sortBufferManager, serde)); diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java index 581df286ecd..7a18d975e39 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java @@ -22,6 +22,8 @@ import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.commons.utils.AuthUtils; import org.apache.iotdb.commons.utils.SerializeUtils; +import com.google.common.collect.Sets; + import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; @@ -230,12 +232,12 @@ public class Role { public void deserialize(ByteBuffer buffer) { name = SerializeUtils.deserializeString(buffer); int sysPrivilegeSize = buffer.getInt(); - sysPrivilegeSet = new HashSet<>(); + sysPrivilegeSet = Sets.newHashSetWithExpectedSize(sysPrivilegeSize); for (int i = 0; i < sysPrivilegeSize; i++) { sysPrivilegeSet.add(buffer.getInt()); } int sysPriGrantOptSize = buffer.getInt(); - sysPriGrantOpt = new HashSet<>(); + sysPriGrantOpt = Sets.newHashSetWithExpectedSize(sysPriGrantOptSize); for (int i = 0; i < sysPriGrantOptSize; i++) { sysPriGrantOpt.add(buffer.getInt()); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/User.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/User.java index 2b0b6eb304a..b037709cdbf 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/User.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/User.java @@ -20,12 +20,13 @@ package org.apache.iotdb.commons.auth.entity; import org.apache.iotdb.commons.utils.SerializeUtils; +import com.google.common.collect.Sets; + import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; @@ -163,13 +164,13 @@ public class User extends Role { super.setName(SerializeUtils.deserializeString(buffer)); password = SerializeUtils.deserializeString(buffer); int systemPriSize = buffer.getInt(); - Set<Integer> sysPri = new HashSet<>(); + Set<Integer> sysPri = Sets.newHashSetWithExpectedSize(systemPriSize); for (int i = 0; i < systemPriSize; i++) { sysPri.add(buffer.getInt()); } super.setSysPrivilegeSet(sysPri); int sysPriGrantOptSize = buffer.getInt(); - Set<Integer> grantOpt = new HashSet<>(); + Set<Integer> grantOpt = Sets.newHashSetWithExpectedSize(sysPriGrantOptSize); for (int i = 0; i < sysPriGrantOptSize; i++) { grantOpt.add(buffer.getInt()); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/LocalFileUserAccessor.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/LocalFileUserAccessor.java index 03a07593677..52fe8b7a042 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/LocalFileUserAccessor.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/LocalFileUserAccessor.java @@ -137,7 +137,7 @@ public class LocalFileUserAccessor implements IUserAccessor { if (oldVersion) { IOUtils.loadRolePrivilege(user, dataInputStream, STRING_ENCODING, strBufferLocal); int roleNum = dataInputStream.readInt(); - List<String> roleList = new ArrayList<>(); + List<String> roleList = new ArrayList<>(roleNum); for (int i = 0; i < roleNum; i++) { String roleName = IOUtils.readString(dataInputStream, STRING_ENCODING, strBufferLocal); roleList.add(roleName); diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/StateProgressIndex.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/StateProgressIndex.java index 96a11989e7f..9081c6786c2 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/StateProgressIndex.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/StateProgressIndex.java @@ -23,6 +23,7 @@ import org.apache.iotdb.commons.consensus.index.ProgressIndex; import org.apache.iotdb.commons.consensus.index.ProgressIndexType; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.RamUsageEstimator; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -213,8 +214,8 @@ public class StateProgressIndex extends ProgressIndex { public static StateProgressIndex deserializeFrom(ByteBuffer byteBuffer) { final long version = ReadWriteIOUtils.readLong(byteBuffer); - final Map<String, Binary> state = new HashMap<>(); final int size = ReadWriteIOUtils.readInt(byteBuffer); + final Map<String, Binary> state = Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; ++i) { final String key = ReadWriteIOUtils.readString(byteBuffer); final Binary value = ReadWriteIOUtils.readBinary(byteBuffer); @@ -229,8 +230,8 @@ public class StateProgressIndex extends ProgressIndex { public static StateProgressIndex deserializeFrom(InputStream stream) throws IOException { final long version = ReadWriteIOUtils.readLong(stream); - final Map<String, Binary> state = new HashMap<>(); final int size = ReadWriteIOUtils.readInt(stream); + final Map<String, Binary> state = Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; ++i) { final String key = ReadWriteIOUtils.readString(stream); final Binary value = ReadWriteIOUtils.readBinary(stream); diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java index 5f06f2dcabd..77b8b0b7aaf 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java @@ -56,7 +56,7 @@ public class ModelHyperparameter { } public List<String> toStringList() { - List<String> resultList = new ArrayList<>(); + List<String> resultList = new ArrayList<>(keyValueMap.size()); for (Map.Entry<String, String> keyValuePair : keyValueMap.entrySet()) { resultList.add(keyValuePair.getKey() + "=" + keyValuePair.getValue()); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java index 846dfa6a7d0..eb91584d42c 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java @@ -345,14 +345,14 @@ public class AlignedPath extends PartialPath { PartialPath partialPath = PartialPath.deserialize(byteBuffer); AlignedPath alignedPath = new AlignedPath(); int measurementSize = ReadWriteIOUtils.readInt(byteBuffer); - List<String> measurements = new ArrayList<>(); + List<String> measurements = new ArrayList<>(measurementSize); for (int i = 0; i < measurementSize; i++) { measurements.add(ReadWriteIOUtils.readString(byteBuffer)); } int measurementSchemaSize = ReadWriteIOUtils.readInt(byteBuffer); List<IMeasurementSchema> measurementSchemas = null; if (measurementSchemaSize != -1) { - measurementSchemas = new ArrayList<>(); + measurementSchemas = new ArrayList<>(measurementSchemaSize); for (int i = 0; i < measurementSchemaSize; i++) { byte type = ReadWriteIOUtils.readByte(byteBuffer); if (type == 0) { diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java index 354724bd487..d9d940bfad1 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java @@ -870,7 +870,7 @@ public class PartialPath extends Path implements Comparable<Path>, Cloneable { } public static List<String> toStringList(List<PartialPath> pathList) { - List<String> ret = new ArrayList<>(); + List<String> ret = new ArrayList<>(pathList.size()); for (PartialPath path : pathList) { ret.add(path.getFullPath()); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java index 3dd274b8c37..c7f778e1896 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java @@ -19,6 +19,7 @@ package org.apache.iotdb.commons.path; +import com.google.common.collect.Sets; import org.apache.tsfile.utils.Accountable; import org.apache.tsfile.utils.PublicBAOS; import org.apache.tsfile.utils.RamUsageEstimator; @@ -256,7 +257,7 @@ public class PathPatternNode<V, VSerializer extends PathPatternNode.Serializer<V int typeOrValueSize = ReadWriteIOUtils.readInt(buffer); if (typeOrValueSize >= 0) { // measurement node in PatternTreeMap - Set<V> valueSet = new HashSet<>(); + Set<V> valueSet = Sets.newHashSetWithExpectedSize(typeOrValueSize); for (int i = 0; i < typeOrValueSize; i++) { valueSet.add(serializer.read(buffer)); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/pipeconsensus/request/PipeConsensusTransferFileSealWithModReq.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/pipeconsensus/request/PipeConsensusTransferFileSealWithModReq.java index a5e2801668c..6000c157304 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/pipeconsensus/request/PipeConsensusTransferFileSealWithModReq.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/pipeconsensus/request/PipeConsensusTransferFileSealWithModReq.java @@ -24,6 +24,7 @@ import org.apache.iotdb.commons.consensus.index.ProgressIndex; import org.apache.iotdb.consensus.pipe.thrift.TCommitId; import org.apache.iotdb.consensus.pipe.thrift.TPipeConsensusTransferReq; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.PublicBAOS; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -31,7 +32,6 @@ import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -117,26 +117,26 @@ public abstract class PipeConsensusTransferFileSealWithModReq extends TPipeConse public PipeConsensusTransferFileSealWithModReq translateFromTPipeConsensusTransferReq( TPipeConsensusTransferReq req) { - fileNames = new ArrayList<>(); int size = ReadWriteIOUtils.readInt(req.body); + fileNames = new ArrayList<>(size); for (int i = 0; i < size; ++i) { fileNames.add(ReadWriteIOUtils.readString(req.body)); } - fileLengths = new ArrayList<>(); size = ReadWriteIOUtils.readInt(req.body); + fileLengths = new ArrayList<>(size); for (int i = 0; i < size; ++i) { fileLengths.add(ReadWriteIOUtils.readLong(req.body)); } - pointCounts = new ArrayList<>(); size = ReadWriteIOUtils.readInt(req.body); + pointCounts = new ArrayList<>(size); for (int i = 0; i < size; ++i) { pointCounts.add(ReadWriteIOUtils.readLong(req.body)); } - parameters = new HashMap<>(); size = ReadWriteIOUtils.readInt(req.body); + parameters = Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; ++i) { final String key = ReadWriteIOUtils.readString(req.body); final String value = ReadWriteIOUtils.readString(req.body); diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferFileSealReqV2.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferFileSealReqV2.java index 976987d72fa..cbf8ed70fc9 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferFileSealReqV2.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferFileSealReqV2.java @@ -21,6 +21,7 @@ package org.apache.iotdb.commons.pipe.sink.payload.thrift.request; import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.PublicBAOS; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -28,7 +29,6 @@ import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -87,20 +87,20 @@ public abstract class PipeTransferFileSealReqV2 extends TPipeTransferReq { } public PipeTransferFileSealReqV2 translateFromTPipeTransferReq(TPipeTransferReq req) { - fileNames = new ArrayList<>(); int size = ReadWriteIOUtils.readInt(req.body); + fileNames = new ArrayList<>(size); for (int i = 0; i < size; ++i) { fileNames.add(ReadWriteIOUtils.readString(req.body)); } - fileLengths = new ArrayList<>(); size = ReadWriteIOUtils.readInt(req.body); + fileLengths = new ArrayList<>(size); for (int i = 0; i < size; ++i) { fileLengths.add(ReadWriteIOUtils.readLong(req.body)); } - parameters = new HashMap<>(); size = ReadWriteIOUtils.readInt(req.body); + parameters = Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; ++i) { final String key = ReadWriteIOUtils.readString(req.body); final String value = ReadWriteIOUtils.readString(req.body); diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferHandshakeV2Req.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferHandshakeV2Req.java index 9a81d844e3f..eeca8536295 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferHandshakeV2Req.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferHandshakeV2Req.java @@ -21,13 +21,13 @@ package org.apache.iotdb.commons.pipe.sink.payload.thrift.request; import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.PublicBAOS; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -63,8 +63,8 @@ public abstract class PipeTransferHandshakeV2Req extends TPipeTransferReq { protected final PipeTransferHandshakeV2Req translateFromTPipeTransferReq( TPipeTransferReq transferReq) { - Map<String, String> params = new HashMap<>(); final int size = ReadWriteIOUtils.readInt(transferReq.body); + Map<String, String> params = Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; ++i) { final String key = ReadWriteIOUtils.readString(transferReq.body); final String value = ReadWriteIOUtils.readString(transferReq.body); diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java index eace4347717..596fe3ab587 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java @@ -81,7 +81,7 @@ public class FunctionViewExpression extends ViewExpression { functionName = ReadWriteIOUtils.readString(byteBuffer); functionAttributesKeyValueList = ReadWriteIOUtils.readStringList(byteBuffer); int expressionSize = ReadWriteIOUtils.readInt(byteBuffer); - expressions = new ArrayList<>(); + expressions = new ArrayList<>(expressionSize); for (int i = 0; i < expressionSize; i++) { expressions.add(ViewExpression.deserialize(byteBuffer)); } @@ -92,7 +92,7 @@ public class FunctionViewExpression extends ViewExpression { functionName = ReadWriteIOUtils.readString(inputStream); functionAttributesKeyValueList = ReadWriteIOUtils.readStringList(inputStream); int expressionSize = ReadWriteIOUtils.readInt(inputStream); - expressions = new ArrayList<>(); + expressions = new ArrayList<>(expressionSize); for (int i = 0; i < expressionSize; i++) { expressions.add(ViewExpression.deserialize(inputStream)); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java index 20c991d470a..37d8af73c6e 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java @@ -465,7 +465,7 @@ public class AuthUtils { public static List<PartialPath> deserializePartialPathList(ByteBuffer buffer) { int size = buffer.getInt(); - List<PartialPath> paths = new ArrayList<>(); + List<PartialPath> paths = new ArrayList<>(size); for (int i = 0; i < size; i++) { paths.add((PartialPath) PathDeserializeUtil.deserialize(buffer)); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/BasicStructureSerDeUtil.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/BasicStructureSerDeUtil.java index 7d6ff521a87..bba21ef2f4a 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/BasicStructureSerDeUtil.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/BasicStructureSerDeUtil.java @@ -19,11 +19,12 @@ package org.apache.iotdb.commons.utils; +import com.google.common.collect.Maps; + import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -52,7 +53,7 @@ public class BasicStructureSerDeUtil { if (size < 0) { return null; } - List<String> stringList = new ArrayList<>(); + List<String> stringList = new ArrayList<>(size); for (int i = 0; i < size; i++) { stringList.add(readString(buffer)); } @@ -215,7 +216,7 @@ public class BasicStructureSerDeUtil { if (length == -1) { return null; } - Map<String, String> map = new HashMap<>(length); + Map<String, String> map = Maps.newHashMapWithExpectedSize(length); for (int i = 0; i < length; i++) { // key String key = readString(buffer); @@ -261,13 +262,13 @@ public class BasicStructureSerDeUtil { if (length == -1) { return null; } - Map<String, List<String>> map = new HashMap<>(length); + Map<String, List<String>> map = Maps.newHashMapWithExpectedSize(length); for (int i = 0; i < length; i++) { // key String key = readString(buffer); // value int listSize = readInt(buffer); - List<String> valueList = new ArrayList<>(); + List<String> valueList = new ArrayList<>(listSize); for (int j = 0; j < listSize; j++) { String value = readString(buffer); valueList.add(value); @@ -303,13 +304,13 @@ public class BasicStructureSerDeUtil { if (length == -1) { return null; } - Map<Integer, List<Integer>> map = new HashMap<>(length); + Map<Integer, List<Integer>> map = Maps.newHashMapWithExpectedSize(length); for (int i = 0; i < length; i++) { // key int key = readInt(buffer); // value int listSize = readInt(buffer); - List<Integer> valueList = new ArrayList<>(); + List<Integer> valueList = new ArrayList<>(listSize); for (int j = 0; j < listSize; j++) { int value = readInt(buffer); valueList.add(value); diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/IOUtils.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/IOUtils.java index da6544717b3..8d771f9947b 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/IOUtils.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/IOUtils.java @@ -234,7 +234,7 @@ public class IOUtils { throws IOException, IllegalPathException { role.setSysPrivilegeSet(0); int pathPriNum = inputStream.readInt(); - List<PathPrivilege> pathPrivilegeList = new ArrayList<>(); + List<PathPrivilege> pathPrivilegeList = new ArrayList<>(pathPriNum); for (int i = 0; i < pathPriNum; i++) { String path = IOUtils.readString(inputStream, encoding, strBufferLocal); PartialPath ppath = new PartialPath(path); diff --git a/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSegment.java b/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSegment.java index aead60e7942..aa0997cd7c2 100644 --- a/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSegment.java +++ b/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSegment.java @@ -104,7 +104,7 @@ public class UDTFSegment implements UDTF { } else if (method.equals("swab")) { // haven't tested yet seg = Segment.swabAlg(v, maxError, windowSize); } - ArrayList<double[]> res = new ArrayList<>(); + ArrayList<double[]> res = new ArrayList<>(seg.size()); for (double[] doubles : seg) { res.add(Segment.approximatedSegment(doubles)); } diff --git a/library-udf/src/main/java/org/apache/iotdb/library/match/PatternExecutor.java b/library-udf/src/main/java/org/apache/iotdb/library/match/PatternExecutor.java index 4e5e7320670..fea5f60dbdd 100644 --- a/library-udf/src/main/java/org/apache/iotdb/library/match/PatternExecutor.java +++ b/library-udf/src/main/java/org/apache/iotdb/library/match/PatternExecutor.java @@ -112,7 +112,7 @@ public class PatternExecutor { } public List<Point> scalePoint(List<Long> times, List<Double> values) { - List<Point> points = new ArrayList<>(); + List<Point> points = new ArrayList<>(times.size()); TimeScale xScale = new TimeScale(times.get(0), times.get(times.size() - 1), 0, 1000); double minY = values.stream().min(Double::compare).orElseGet(() -> 0.0); double maxY = values.stream().max(Double::compare).orElseGet(() -> 0.0); @@ -199,7 +199,7 @@ public class PatternExecutor { if (points.size() < 2) { return new ArrayList<>(); } - List<Double> tangents = new ArrayList<>(); + List<Double> tangents = new ArrayList<>(points.size()); tangents.add(tangent(points.get(0), points.get(1))); for (int i = 1; i < points.size(); i++) { tangents.add(tangent(points.get(i - 1), points.get(i)));
