This is an automated email from the ASF dual-hosted git repository. Caideyipi pushed a commit to branch perf/presize-known-size-containers in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 12b5ce01f64014e446755975f1684f7b9180e678 Author: Caideyipi <[email protected]> AuthorDate: Tue Oct 13 15:28:38 2026 +0800 Pre-size collections with known cardinality --- .../java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java | 8 ++++---- .../main/java/org/apache/iotdb/session/Session.java | 14 +++++++------- .../org/apache/iotdb/session/SessionConnection.java | 2 +- .../org/apache/iotdb/session/util/SessionUtils.java | 2 +- .../operator/SimpleTsBlockWithPositionComparator.java | 2 +- .../operator/process/FilterAndProjectOperator.java | 6 ++++-- .../operator/process/PatternRecognitionOperator.java | 2 +- .../process/rowpattern/PatternPartitionExecutor.java | 2 +- .../process/rowpattern/expression/Computation.java | 2 +- .../process/rowpattern/expression/NaryComputation.java | 2 +- .../column/AbstractCaseWhenThenColumnTransformer.java | 2 +- .../column/multi/LogicalAndMultiColumnTransformer.java | 2 +- .../column/multi/LogicalOrMultiColumnTransformer.java | 2 +- .../dag/column/multi/MultiColumnTransformer.java | 2 +- .../org/apache/iotdb/calc/utils/sort/DiskSpiller.java | 4 ++-- .../consensus/request/write/auth/AuthorTreePlan.java | 4 ++-- .../write/pipe/payload/PipeDeactivateTemplatePlan.java | 4 ++-- .../write/pipe/task/OperateMultiplePipesPlanV2.java | 2 +- .../subscription/topic/AlterMultipleTopicsPlan.java | 2 +- .../impl/schema/DeactivateTemplateProcedure.java | 3 ++- .../procedure/impl/sync/AuthOperationProcedure.java | 2 +- .../iot/subscription/SubscriptionQueueRegistry.java | 5 +++-- .../exchange/payload/FetchCombineResultRequest.java | 2 +- .../iotdb/db/queryengine/common/TimeseriesContext.java | 4 +++- .../fragment/FragmentInstanceFailureInfo.java | 4 ++-- .../execution/operator/process/TransformOperator.java | 2 +- .../plan/expression/multi/FunctionExpression.java | 4 ++-- .../expression/visitor/ColumnTransformerVisitor.java | 6 ++++-- .../visitor/CompleteMeasurementSchemaVisitor.java | 2 +- .../expression/visitor/IntermediateLayerVisitor.java | 3 ++- .../node/metadata/read/LevelTimeSeriesCountNode.java | 4 ++-- .../node/metadata/read/SeriesSchemaFetchScanNode.java | 4 ++-- .../plan/node/metadata/read/TimeSeriesCountNode.java | 4 ++-- .../node/metadata/read/TimeSeriesSchemaScanNode.java | 4 ++-- .../metadata/write/CreateAlignedTimeSeriesNode.java | 14 +++++++------- .../plan/node/metadata/write/MeasurementGroup.java | 14 +++++++------- .../plan/planner/plan/node/sink/IdentitySinkNode.java | 2 +- .../plan/planner/plan/node/sink/ShuffleSinkNode.java | 2 +- .../node/source/AlignedSeriesAggregationScanNode.java | 3 ++- .../planner/plan/node/source/DeviceRegionScanNode.java | 3 ++- .../plan/node/source/SeriesAggregationScanNode.java | 3 ++- .../plan/node/source/TimeseriesRegionScanNode.java | 10 ++++++---- .../plan/node/write/InsertMultiTabletsNode.java | 5 ++--- .../plan/planner/plan/node/write/InsertRowsNode.java | 5 ++--- .../plan/node/write/RelationalInsertRowsNode.java | 5 ++--- .../plan/parameter/model/ModelInferenceDescriptor.java | 4 ++-- .../schema/TableDeviceAttributeCommitUpdateNode.java | 4 ++-- .../logfile/visitor/SchemaRegionPlanDeserializer.java | 18 +++++++++--------- .../dataregion/memtable/AbstractMemTable.java | 4 ++-- .../dataregion/memtable/AlignedWritableMemChunk.java | 2 +- .../dataregion/memtable/WritableMemChunk.java | 2 +- .../tsfile/timeindex/ArrayDeviceTimeIndex.java | 4 ++-- .../tsfile/timeindex/PlainDeviceTimeIndex.java | 4 ++-- .../storageengine/load/splitter/AlignedChunkData.java | 4 ++-- .../org/apache/iotdb/commons/auth/entity/Role.java | 2 +- .../iotdb/commons/auth/role/LocalFileRoleAccessor.java | 2 +- .../consensus/index/impl/StateProgressIndex.java | 5 +++-- .../disk/strategy/RandomOnDiskUsableSpaceStrategy.java | 2 +- .../iotdb/commons/model/ModelHyperparameter.java | 2 +- .../org/apache/iotdb/commons/path/AlignedPath.java | 4 ++-- .../org/apache/iotdb/commons/path/PartialPath.java | 2 +- .../org/apache/iotdb/commons/path/PathPatternNode.java | 4 ++-- .../IoTConsensusV2TransferFileSealWithModReq.java | 10 +++++----- .../thrift/request/PipeTransferFileSealReqV2.java | 8 ++++---- .../thrift/request/PipeTransferHandshakeV2Req.java | 4 ++-- .../planner/rowpattern/LogicalIndexPointer.java | 4 ++-- .../plan/relational/sql/ast/InListExpression.java | 2 +- .../multichildren/AbstractMultiChildrenFilter.java | 2 +- .../commons/schema/filter/impl/values/InFilter.java | 4 ++-- .../viewExpression/multi/FunctionViewExpression.java | 4 ++-- .../java/org/apache/iotdb/commons/utils/AuthUtils.java | 2 +- .../iotdb/commons/utils/BasicStructureSerDeUtil.java | 15 ++++++++------- .../org/apache/iotdb/library/dprofile/UDTFSegment.java | 2 +- .../apache/iotdb/library/match/PatternExecutor.java | 6 +++--- 74 files changed, 165 insertions(+), 152 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 b4516efa7c8..7ec09bce042 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 @@ -112,8 +112,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)); @@ -191,8 +191,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/session/src/main/java/org/apache/iotdb/session/Session.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java index 5d20754fff4..fe9fb38f6db 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 @@ -2648,7 +2648,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)); @@ -2879,7 +2879,7 @@ public class Session implements ISession { (k, v) -> { if (v == null) { List<String> measurements = new ArrayList<>(tablet.getSchemas().size()); - List<TSDataType> dataTypes = new ArrayList<>(); + List<TSDataType> dataTypes = new ArrayList<>(tablet.getSchemas().size()); tablet .getSchemas() .forEach( @@ -3289,8 +3289,8 @@ public class Session implements ISession { return; } request.addToPrefixPaths(filtered.getDeviceId()); - List<String> measurements = new ArrayList<>(); - List<Integer> dataTypes = new ArrayList<>(); + List<String> measurements = new ArrayList<>(filtered.getSchemas().size()); + List<Integer> dataTypes = new ArrayList<>(filtered.getSchemas().size()); request.setIsAligned(isAligned); for (IMeasurementSchema measurementSchema : filtered.getSchemas()) { if (measurementSchema.getMeasurementName() == null) { @@ -3980,9 +3980,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/SessionConnection.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java index 6bcc41859a8..47ed514e0c8 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java @@ -1341,7 +1341,7 @@ public class SessionConnection { if (endPointList == null) { return MSG_RECONNECTION_FAIL; } - List<String> urls = new ArrayList<>(); + List<String> urls = new ArrayList<>(endPointList.size()); for (TEndPoint end : endPointList) { urls.add(UrlUtils.convertTEndPointIpv4AndIpv6Url(end)); } 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 d6ff4d735ae..5203fffd915 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 @@ -296,7 +296,7 @@ public class SessionUtils { if (nodeUrls == null) { throw new NumberFormatException(SessionMessages.NODE_URLS_IS_NULL); } - List<TEndPoint> endPointsList = new ArrayList<>(); + List<TEndPoint> endPointsList = new ArrayList<>(nodeUrls.size()); for (String nodeUrl : nodeUrls) { try { endPointsList.add(UrlUtils.parseTEndPointIpv4AndIpv6Url(nodeUrl)); diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/SimpleTsBlockWithPositionComparator.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/SimpleTsBlockWithPositionComparator.java index 8cab1352032..5a068c53371 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/SimpleTsBlockWithPositionComparator.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/SimpleTsBlockWithPositionComparator.java @@ -36,7 +36,7 @@ public class SimpleTsBlockWithPositionComparator implements TsBlockWithPositionC public SimpleTsBlockWithPositionComparator( List<TSDataType> types, List<Integer> sortChannels, List<SortOrder> sortOrders) { - List<TSDataType> sortedTypes = new ArrayList<>(); + List<TSDataType> sortedTypes = new ArrayList<>(sortChannels.size()); for (Integer sortChannel : sortChannels) { sortedTypes.add(types.get(sortChannel)); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/FilterAndProjectOperator.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/FilterAndProjectOperator.java index 5ab7e58a696..67d0d69874a 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/FilterAndProjectOperator.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/FilterAndProjectOperator.java @@ -164,7 +164,9 @@ public class FilterAndProjectOperator implements ProcessOperator { // reuse this builder filterTsBlockBuilder.reset(); - 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)); } @@ -268,7 +270,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/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/PatternRecognitionOperator.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/PatternRecognitionOperator.java index d0ee968c0e5..28c184eb17d 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/PatternRecognitionOperator.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/PatternRecognitionOperator.java @@ -117,7 +117,7 @@ public class PatternRecognitionOperator implements ProcessOperator { // Partition Part this.partitionChannels = ImmutableList.copyOf(partitionChannels); // Acquire partition channels' data types - List<TSDataType> partitionDataTypes = new ArrayList<>(); + List<TSDataType> partitionDataTypes = new ArrayList<>(partitionChannels.size()); for (Integer channel : partitionChannels) { partitionDataTypes.add(inputDataTypes.get(channel)); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/PatternPartitionExecutor.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/PatternPartitionExecutor.java index 82637f82125..4d475fbf405 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/PatternPartitionExecutor.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/PatternPartitionExecutor.java @@ -118,7 +118,7 @@ public final class PatternPartitionExecutor { this.matchNumber = 1; // Prepare for peer group comparing - List<TSDataType> sortDataTypes = new ArrayList<>(); + List<TSDataType> sortDataTypes = new ArrayList<>(sortChannels.size()); for (int channel : sortChannels) { TSDataType dataType = dataTypes.get(channel); sortDataTypes.add(dataType); diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/Computation.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/Computation.java index 59de959cd7c..860f8812d4f 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/Computation.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/Computation.java @@ -108,7 +108,7 @@ public abstract class Computation { return new BinaryComputation(left, right, op); } else if (expression instanceof LogicalExpression) { LogicalExpression logicalExpr = (LogicalExpression) expression; - List<Computation> computations = new ArrayList<>(); + List<Computation> computations = new ArrayList<>(logicalExpr.getTerms().size()); for (Expression term : logicalExpr.getTerms()) { computations.add(parse(term, counter, symbolToIndex)); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/NaryComputation.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/NaryComputation.java index b077ccd1b35..c7862f1a524 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/NaryComputation.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/NaryComputation.java @@ -33,7 +33,7 @@ public class NaryComputation extends Computation { @Override public Object evaluate(List<Object> values) { - List<Object> operandValues = new ArrayList<>(); + List<Object> operandValues = new ArrayList<>(terms.size()); for (Computation term : terms) { operandValues.add(term.evaluate(values)); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/AbstractCaseWhenThenColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/AbstractCaseWhenThenColumnTransformer.java index 5603bde031d..8452a590a25 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/AbstractCaseWhenThenColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/AbstractCaseWhenThenColumnTransformer.java @@ -46,7 +46,7 @@ public abstract class AbstractCaseWhenThenColumnTransformer extends ColumnTransf whenTransformers.size() == thenTransformers.size(), CalcMessages .EXCEPTION_THE_SIZE_BETWEEN_WHENTRANSFORMERS_AND_THENTRANSFORMERS_NEEDS_TO_BE_SAME_AC796883); - 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))); } diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalAndMultiColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalAndMultiColumnTransformer.java index 7e8dce8502e..0510ce0c194 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalAndMultiColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalAndMultiColumnTransformer.java @@ -40,7 +40,7 @@ public class LogicalAndMultiColumnTransformer extends LogicalMultiColumnTransfor boolean[] selectionCopy = selection.clone(); boolean[] hasNull = new boolean[selection.length]; - List<Column> childrenColumns = new ArrayList<>(); + List<Column> childrenColumns = new ArrayList<>(columnTransformerList.size()); for (ColumnTransformer child : columnTransformerList) { child.evaluateWithSelection(selectionCopy); Column childColumn = child.getColumn(); diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalOrMultiColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalOrMultiColumnTransformer.java index 32694820013..b754de9f13a 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalOrMultiColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalOrMultiColumnTransformer.java @@ -40,7 +40,7 @@ public class LogicalOrMultiColumnTransformer extends LogicalMultiColumnTransform boolean[] selectionCopy = selection.clone(); boolean[] hasNull = new boolean[selection.length]; - List<Column> childColumns = new ArrayList<>(); + List<Column> childColumns = new ArrayList<>(columnTransformerList.size()); for (ColumnTransformer child : columnTransformerList) { child.evaluateWithSelection(selectionCopy); Column childColumn = child.getColumn(); diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/MultiColumnTransformer.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/MultiColumnTransformer.java index 09cb1530bc4..827836a39cc 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/MultiColumnTransformer.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/MultiColumnTransformer.java @@ -61,7 +61,7 @@ public abstract class MultiColumnTransformer extends ColumnTransformer { @Override public void evaluateWithSelection(boolean[] selection) { - List<Column> childrenColumns = new ArrayList<>(); + List<Column> childrenColumns = new ArrayList<>(columnTransformerList.size()); for (ColumnTransformer child : columnTransformerList) { child.evaluateWithSelection(selection); diff --git a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/sort/DiskSpiller.java b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/sort/DiskSpiller.java index cdda259e2b0..cc7d91b3092 100644 --- a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/sort/DiskSpiller.java +++ b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/sort/DiskSpiller.java @@ -155,7 +155,7 @@ public abstract 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); } @@ -164,7 +164,7 @@ public abstract 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/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java index a1f5a6d3c97..3775e20c824 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java @@ -24,13 +24,13 @@ import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.commons.utils.BasicStructureSerDeUtil; import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType; +import com.google.common.collect.Sets; 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.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; @@ -244,7 +244,7 @@ public class AuthorTreePlan extends AuthorPlan { this.permissions = null; } else { 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/pipe/payload/PipeDeactivateTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java index 6b09f7c9fef..e71aad9d92d 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.commons.schema.template.Template; import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan; import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType; +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(final ByteBuffer buffer) throws IOException { final int size = ReadWriteIOUtils.readInt(buffer); - templateSetInfo = new HashMap<>(); + templateSetInfo = Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; i++) { final PartialPath pattern = (PartialPath) PathDeserializeUtil.deserialize(buffer); final 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 d41e126101b..324d9603736 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 @@ -77,8 +77,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++) { final boolean isLastSubPlan = i == size - 1; short type = ReadWriteIOUtils.readShort(buffer); 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 b2875b7fc41..828ec9d8d6d 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 @@ -49,6 +49,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; @@ -384,7 +385,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 e3ff2c08188..bf37a6de803 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 @@ -220,7 +220,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/consensus/src/main/java/org/apache/iotdb/consensus/iot/subscription/SubscriptionQueueRegistry.java b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/subscription/SubscriptionQueueRegistry.java index 0cc06eeff52..d2de8f93fd9 100644 --- a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/subscription/SubscriptionQueueRegistry.java +++ b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/subscription/SubscriptionQueueRegistry.java @@ -88,7 +88,8 @@ public class SubscriptionQueueRegistry { } public synchronized Collection<SubscriptionWalRetentionPolicy> getRetentionPolicies() { - final Collection<SubscriptionWalRetentionPolicy> retentionPolicies = new ArrayList<>(); + final Collection<SubscriptionWalRetentionPolicy> retentionPolicies = + new ArrayList<>(queues.size()); for (final SubscriptionQueueRegistration registration : queues.values()) { retentionPolicies.add(registration.retentionPolicy); } @@ -103,7 +104,7 @@ public class SubscriptionQueueRegistry { } } - final Collection<Long> retainedMinVersionIds = new ArrayList<>(); + final Collection<Long> retainedMinVersionIds = new ArrayList<>(suppliers.size()); for (final LongSupplier supplier : suppliers) { retainedMinVersionIds.add(supplier.getAsLong()); } 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 84465e4ca75..c333e49a9a3 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 @@ -166,8 +166,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; @@ -175,10 +173,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/TransformOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java index e2c7984b499..9a4526c5bfe 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 @@ -288,7 +288,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/expression/multi/FunctionExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java index f977a24a1bb..a1b860880da 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 @@ -110,7 +110,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)); } @@ -305,7 +305,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 17871eda0b1..561358eecf5 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 @@ -387,8 +387,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 bac3b533f0c..341b8eee635 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 90109818be8..60d85f050e8 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 @@ -428,7 +428,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/metadata/read/LevelTimeSeriesCountNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/LevelTimeSeriesCountNode.java index b0e1e682ad7..073c17df26b 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/LevelTimeSeriesCountNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/LevelTimeSeriesCountNode.java @@ -31,6 +31,7 @@ import org.apache.iotdb.commons.schema.filter.SchemaFilter; import org.apache.iotdb.commons.schema.template.Template; import org.apache.iotdb.db.i18n.DataNodeQueryMessages; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import jakarta.validation.constraints.NotNull; @@ -38,7 +39,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; @@ -163,7 +163,7 @@ public class LevelTimeSeriesCountNode extends SchemaQueryScanNode { boolean includeSystemDatabase = ReadWriteIOUtils.readBool(buffer); boolean includeAuditDatabase = 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/metadata/read/SeriesSchemaFetchScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/SeriesSchemaFetchScanNode.java index 4509ebdc6f6..9b0a40636c4 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/SeriesSchemaFetchScanNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/SeriesSchemaFetchScanNode.java @@ -30,12 +30,12 @@ import org.apache.iotdb.commons.schema.template.Template; 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.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. */ @@ -131,7 +131,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/metadata/read/TimeSeriesCountNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesCountNode.java index 2dafac1779f..1158de6c208 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesCountNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesCountNode.java @@ -32,6 +32,7 @@ import org.apache.iotdb.commons.schema.filter.SchemaFilter; import org.apache.iotdb.commons.schema.template.Template; import org.apache.iotdb.db.i18n.DataNodeQueryMessages; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import jakarta.validation.constraints.NotNull; @@ -39,7 +40,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; @@ -158,7 +158,7 @@ public class TimeSeriesCountNode extends SchemaQueryScanNode { boolean includeAuditDatabase = 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/metadata/read/TimeSeriesSchemaScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesSchemaScanNode.java index 5a035d31c54..819153b7b57 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesSchemaScanNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesSchemaScanNode.java @@ -32,6 +32,7 @@ import org.apache.iotdb.commons.schema.template.Template; import org.apache.iotdb.db.i18n.DataNodeQueryMessages; import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering; +import com.google.common.collect.Maps; import org.apache.tsfile.utils.ReadWriteIOUtils; import jakarta.validation.constraints.NotNull; @@ -39,7 +40,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; @@ -157,7 +157,7 @@ public class TimeSeriesSchemaScanNode extends SchemaQueryScanNode { } 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/metadata/write/CreateAlignedTimeSeriesNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/CreateAlignedTimeSeriesNode.java index e9c57024647..f4bc37a0cee 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/CreateAlignedTimeSeriesNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/CreateAlignedTimeSeriesNode.java @@ -221,30 +221,30 @@ public class CreateAlignedTimeSeriesNode extends WritePlanNode DataNodeQueryMessages.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)); @@ -254,7 +254,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)); @@ -264,7 +264,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/metadata/write/MeasurementGroup.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/MeasurementGroup.java index 8667f6e21e1..699b904b669 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/MeasurementGroup.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/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/sink/IdentitySinkNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java index 6ce7fb1e2a7..c59a22f7f05 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 @@ -101,7 +101,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 8348d2d4644..b3804b355f6 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 @@ -100,7 +100,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 5c783ec88e9..463f0375a39 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 @@ -251,7 +251,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/DeviceRegionScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/DeviceRegionScanNode.java index af96dcc0878..3574fa859f5 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 @@ -34,6 +34,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; @@ -105,7 +106,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 dd0fd381806..ac67601d849 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 @@ -241,7 +241,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 24bcf288403..397ccba0f24 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 @@ -36,6 +36,7 @@ import org.apache.iotdb.db.queryengine.common.TimeseriesContext; 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; @@ -145,11 +146,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)); } @@ -308,12 +310,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 8d484933e8f..81ec30db34f 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 @@ -228,10 +228,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 7071f9927c0..c2ba7c04791 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 @@ -229,10 +229,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/node/write/RelationalInsertRowsNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertRowsNode.java index c76e7f327dd..4a98819c648 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertRowsNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertRowsNode.java @@ -115,10 +115,9 @@ public class RelationalInsertRowsNode extends InsertRowsNode { public static RelationalInsertRowsNode 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++) { RelationalInsertRowNode insertRowNode = new RelationalInsertRowNode(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 1301ec97eb3..cb8b9deb585 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 @@ -21,13 +21,13 @@ package org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.model; import org.apache.iotdb.commons.model.ModelInformation; +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; @@ -57,7 +57,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/plan/relational/planner/node/schema/TableDeviceAttributeCommitUpdateNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/schema/TableDeviceAttributeCommitUpdateNode.java index 14ec0fbdfc6..188c435f2b6 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/schema/TableDeviceAttributeCommitUpdateNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/schema/TableDeviceAttributeCommitUpdateNode.java @@ -30,13 +30,13 @@ import org.apache.iotdb.db.schemaengine.schemaregion.SchemaRegionPlanType; import org.apache.iotdb.db.schemaengine.schemaregion.SchemaRegionPlanVisitor; import org.apache.iotdb.db.schemaengine.schemaregion.attribute.update.DeviceAttributeCacheUpdater; +import com.google.common.collect.Sets; 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.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -170,7 +170,7 @@ public class TableDeviceAttributeCommitUpdateNode extends PlanNode implements IS } size = ReadWriteIOUtils.readInt(buffer); - final Set<TDataNodeLocation> shrunkNodes = new HashSet<>(); + final Set<TDataNodeLocation> shrunkNodes = Sets.newHashSetWithExpectedSize(size); for (int i = 0; i < size; ++i) { shrunkNodes.add( DeviceAttributeCacheUpdater.deserializeNodeLocationForAttributeUpdate(buffer)); 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 52fa8646187..326e7b1e849 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 @@ -174,31 +174,31 @@ public class SchemaRegionPlanDeserializer implements IDeserializer<ISchemaRegion } final int size = ReadWriteIOUtils.readInt(buffer); - final List<String> measurements = new ArrayList<>(); + final List<String> measurements = new ArrayList<>(size); for (int i = 0; i < size; i++) { measurements.add(ReadWriteIOUtils.readString(buffer)); } createAlignedTimeSeriesPlan.setMeasurements(measurements); - final List<TSDataType> dataTypes = new ArrayList<>(); + final List<TSDataType> dataTypes = new ArrayList<>(size); for (int i = 0; i < size; i++) { dataTypes.add(TSDataType.deserialize(buffer.get())); } createAlignedTimeSeriesPlan.setDataTypes(dataTypes); - final List<TSEncoding> encodings = new ArrayList<>(); + final List<TSEncoding> encodings = new ArrayList<>(size); for (int i = 0; i < size; i++) { encodings.add(TSEncoding.deserialize(buffer.get())); } createAlignedTimeSeriesPlan.setEncodings(encodings); - final List<CompressionType> compressors = new ArrayList<>(); + final List<CompressionType> compressors = new ArrayList<>(size); for (int i = 0; i < size; i++) { compressors.add(CompressionType.deserialize(buffer.get())); } createAlignedTimeSeriesPlan.setCompressors(compressors); - final List<Long> tagOffsets = new ArrayList<>(); + final List<Long> tagOffsets = new ArrayList<>(size); for (int i = 0; i < size; i++) { tagOffsets.add(buffer.getLong()); } @@ -206,7 +206,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)); } @@ -215,7 +215,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)); } @@ -224,7 +224,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)); } @@ -287,7 +287,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))); } 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 35a3696630e..5095ab45fd5 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 @@ -429,9 +429,9 @@ public abstract class AbstractMemTable implements IMemTable { } public void writeTabletNode(InsertTabletNode insertTabletNode, int start, int end) { - List<IMeasurementSchema> schemaList = new ArrayList<>(); final int measurementSize = insertTabletNode.getMeasurements() == null ? 0 : insertTabletNode.getMeasurements().length; + List<IMeasurementSchema> schemaList = new ArrayList<>(measurementSize); final Object[] writableColumns = new Object[measurementSize]; final BitMap[] writableBitMaps = insertTabletNode.getBitMaps() == null ? null : new BitMap[measurementSize]; @@ -475,9 +475,9 @@ public abstract class AbstractMemTable implements IMemTable { int end, TSStatus[] results, List<Pair<IDeviceID, Integer>> deviceEndOffsetPairs) { - List<IMeasurementSchema> schemaList = new ArrayList<>(); final int measurementSize = insertTabletNode.getMeasurements() == null ? 0 : insertTabletNode.getMeasurements().length; + List<IMeasurementSchema> schemaList = new ArrayList<>(measurementSize); final Object[] writableColumns = new Object[measurementSize]; final BitMap[] writableBitMaps = insertTabletNode.getBitMaps() == null ? null : new BitMap[measurementSize]; 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 a24c0589933..1c670220f21 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 @@ -1235,7 +1235,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 7e54296c6a8..bc3d91fc3f7 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 @@ -470,7 +470,7 @@ public class WritableMemChunk extends AbstractWritableMemChunk { TypeServices.StorageEngine.TV_LIST_OBJECT_WRITER_SERVICE.call( Type.fromTsDataType(memChunk.schema.getType())); 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/ArrayDeviceTimeIndex.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java index b38bb8b8cc9..8af037a5924 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java @@ -27,6 +27,7 @@ import org.apache.iotdb.db.i18n.StorageEngineMessages; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; import org.apache.iotdb.db.utils.CommonUtils; +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.IDeviceID.Deserializer; @@ -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; @@ -200,7 +200,7 @@ public class ArrayDeviceTimeIndex 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++) { IDeviceID deviceID = Deserializer.DEFAULT_DESERIALIZER.deserializeFrom(inputStream); ReadWriteIOUtils.skip(inputStream, ReadWriteIOUtils.INT_LEN); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java index 785407ca40f..275b84e11c0 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java @@ -23,13 +23,13 @@ import org.apache.iotdb.commons.exception.IllegalPathException; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache; +import com.google.common.collect.Sets; import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; -import java.util.HashSet; import java.util.Set; public class PlainDeviceTimeIndex extends ArrayDeviceTimeIndex implements ITimeIndex { @@ -97,7 +97,7 @@ public class PlainDeviceTimeIndex extends ArrayDeviceTimeIndex implements ITimeI 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 d8a8e6adce9..2e4e51301c4 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 @@ -399,7 +399,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); @@ -407,7 +407,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/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 4c1a4baa78f..01f21a06e57 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 @@ -128,7 +128,7 @@ public class Role { } public List<TPathPrivilege> getTreePrivilegeInfo() { - List<TPathPrivilege> privilegeList = new ArrayList<>(); + List<TPathPrivilege> privilegeList = new ArrayList<>(pathPrivilegeList.size()); for (PathPrivilege pathPrivilege : pathPrivilegeList) { TPathPrivilege pathPriv = new TPathPrivilege(); pathPriv.setPath(pathPrivilege.getPath().getFullPath()); diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java index c6b20c2c137..abc5ea5dabf 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java @@ -160,7 +160,7 @@ public class LocalFileRoleAccessor implements IEntityAccessor { throws IOException, IllegalPathException { role.setSysPrivilegesWithMask(dataInputStream.readInt()); int num = ReadWriteIOUtils.readInt(dataInputStream); - List<PathPrivilege> pathPrivilegeList = new ArrayList<>(); + List<PathPrivilege> pathPrivilegeList = new ArrayList<>(num); for (int i = 0; i < num; i++) { pathPrivilegeList.add( IOUtils.readPathPrivilege(dataInputStream, STRING_ENCODING, strBufferLocal)); 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 ed2b4d91145..26e18a3f7dc 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/disk/strategy/RandomOnDiskUsableSpaceStrategy.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/disk/strategy/RandomOnDiskUsableSpaceStrategy.java index 28264f142a1..ec46043a54a 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/disk/strategy/RandomOnDiskUsableSpaceStrategy.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/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); if (isUnavailableFolder(folder)) { 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 43502db0be8..07a3c7721e8 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 @@ -377,14 +377,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 9d71b0121bc..9041402be46 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 @@ -973,7 +973,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 56240432f69..03b5f02e04b 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; @@ -30,7 +31,6 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -272,7 +272,7 @@ public class PathPatternNode<V, S extends PathPatternNode.Serializer<V>> impleme final int typeOrValueSize = ReadWriteIOUtils.readInt(buffer); if (typeOrValueSize >= 0) { // measurement node in PatternTreeMap - final Set<V> valueSet = new HashSet<>(); + final 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/iotconsensusv2/request/IoTConsensusV2TransferFileSealWithModReq.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2TransferFileSealWithModReq.java index 188e3fbe4fc..67ff74b79c2 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2TransferFileSealWithModReq.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2TransferFileSealWithModReq.java @@ -24,6 +24,7 @@ import org.apache.iotdb.commons.consensus.index.ProgressIndex; import org.apache.iotdb.consensus.iotconsensusv2.thrift.TCommitId; import org.apache.iotdb.consensus.iotconsensusv2.thrift.TIoTConsensusV2TransferReq; +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 IoTConsensusV2TransferFileSealWithModReq extends TIoTConse public IoTConsensusV2TransferFileSealWithModReq translateFromTIoTConsensusV2TransferReq( TIoTConsensusV2TransferReq 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 227d5871d8b..c6d0c580cea 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; @@ -100,20 +100,20 @@ public abstract class PipeTransferFileSealReqV2 extends TPipeTransferReq { } public PipeTransferFileSealReqV2 translateFromTPipeTransferReq(final 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 47267949472..8152ffe43e7 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,9 +63,9 @@ public abstract class PipeTransferHandshakeV2Req extends TPipeTransferReq { protected final PipeTransferHandshakeV2Req translateFromTPipeTransferReq( TPipeTransferReq transferReq) { - Map<String, String> params = new HashMap<>(); final ByteBuffer bodyBuffer = transferReq.body.duplicate(); final int size = ReadWriteIOUtils.readInt(bodyBuffer); + Map<String, String> params = Maps.newHashMapWithExpectedSize(size); for (int i = 0; i < size; ++i) { final String key = ReadWriteIOUtils.readString(bodyBuffer); final String value = ReadWriteIOUtils.readString(bodyBuffer); diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/planner/rowpattern/LogicalIndexPointer.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/planner/rowpattern/LogicalIndexPointer.java index ac1d0d71950..5b0e85cf3cf 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/planner/rowpattern/LogicalIndexPointer.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/planner/rowpattern/LogicalIndexPointer.java @@ -21,12 +21,12 @@ package org.apache.iotdb.commons.queryengine.plan.relational.planner.rowpattern; import org.apache.iotdb.commons.i18n.QueryMessages; +import com.google.common.collect.Sets; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.HashSet; import java.util.Objects; import java.util.Set; @@ -144,7 +144,7 @@ public class LogicalIndexPointer { public static LogicalIndexPointer deserialize(ByteBuffer byteBuffer) { int labelCount = ReadWriteIOUtils.readInt(byteBuffer); - Set<IrLabel> labels = new HashSet<>(); + Set<IrLabel> labels = Sets.newHashSetWithExpectedSize(labelCount); for (int i = 0; i < labelCount; i++) { labels.add(IrLabel.deserialize(byteBuffer)); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/sql/ast/InListExpression.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/sql/ast/InListExpression.java index 24bf8976caa..336dee747a4 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/sql/ast/InListExpression.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/sql/ast/InListExpression.java @@ -59,7 +59,7 @@ public class InListExpression extends Expression { public InListExpression(ByteBuffer byteBuffer) { super(null); int size = ReadWriteIOUtils.readInt(byteBuffer); - this.values = new ArrayList<>(); + this.values = new ArrayList<>(size); for (int i = 0; i < size; i++) { values.add(Expression.deserialize(byteBuffer)); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/multichildren/AbstractMultiChildrenFilter.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/multichildren/AbstractMultiChildrenFilter.java index 888f9675caa..c3da760aec9 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/multichildren/AbstractMultiChildrenFilter.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/multichildren/AbstractMultiChildrenFilter.java @@ -43,7 +43,7 @@ public abstract class AbstractMultiChildrenFilter extends SchemaFilter { protected AbstractMultiChildrenFilter(final ByteBuffer byteBuffer) { final int num = ReadWriteIOUtils.readInt(byteBuffer); - children = new ArrayList<>(); + children = new ArrayList<>(num); for (int i = 0; i < num; ++i) { this.children.add(SchemaFilter.deserialize(byteBuffer)); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/values/InFilter.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/values/InFilter.java index 5df2993825d..20198bc36e9 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/values/InFilter.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/values/InFilter.java @@ -24,13 +24,13 @@ import org.apache.iotdb.commons.schema.filter.SchemaFilterType; import org.apache.iotdb.commons.schema.filter.SchemaFilterVisitor; import org.apache.iotdb.commons.schema.filter.impl.multichildren.OrFilter; +import com.google.common.collect.Sets; import org.apache.tsfile.utils.RamUsageEstimator; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.HashSet; import java.util.Objects; import java.util.Set; @@ -50,7 +50,7 @@ public class InFilter extends SchemaFilter { public InFilter(final ByteBuffer byteBuffer) { final int length = ReadWriteIOUtils.readInt(byteBuffer); - this.values = new HashSet<>(); + this.values = Sets.newHashSetWithExpectedSize(length); for (int i = 0; i < length; ++i) { values.add(ReadWriteIOUtils.readString(byteBuffer)); } 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 1f73f59ae00..fcd4c1c6f97 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 1e01dbeaee7..ccd254e1d20 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 @@ -545,7 +545,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 e797779b832..79dbc001105 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 @@ -21,11 +21,12 @@ package org.apache.iotdb.commons.utils; import org.apache.iotdb.commons.i18n.UtilMessages; +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; @@ -54,7 +55,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)); } @@ -217,7 +218,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); @@ -263,13 +264,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); @@ -305,13 +306,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/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..565f24156df 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); @@ -129,7 +129,7 @@ public class PatternExecutor { } public List<Point> scalePoint(List<Point> sourcePoints) { - List<Point> points = new ArrayList<>(); + List<Point> points = new ArrayList<>(sourcePoints.size()); TimeScale xScale = new TimeScale( (long) sourcePoints.get(0).getX(), @@ -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)));
