diff --git a/core/trino-main/src/main/java/io/trino/cost/FilterStatsCalculator.java b/core/trino-main/src/main/java/io/trino/cost/FilterStatsCalculator.java index f80055075ea2..2483556da146 100644 --- a/core/trino-main/src/main/java/io/trino/cost/FilterStatsCalculator.java +++ b/core/trino-main/src/main/java/io/trino/cost/FilterStatsCalculator.java @@ -205,9 +205,10 @@ private PlanNodeStatsEstimate estimateLogicalAnd(List terms) **/ private List estimateCorrelatedExpressions(List terms, double filterConjunctionIndependenceFactor) { - ImmutableList.Builder estimatesBuilder = ImmutableList.builder(); + List> extractedCorrelatedGroups = extractCorrelatedGroups(terms, filterConjunctionIndependenceFactor); + ImmutableList.Builder estimatesBuilder = ImmutableList.builderWithExpectedSize(extractedCorrelatedGroups.size()); boolean hasUnestimatedTerm = false; - for (List correlatedExpressions : extractCorrelatedGroups(terms, filterConjunctionIndependenceFactor)) { + for (List correlatedExpressions : extractedCorrelatedGroups) { PlanNodeStatsEstimate combinedEstimate = PlanNodeStatsEstimate.unknown(); for (Expression expression : correlatedExpressions) { PlanNodeStatsEstimate estimate; diff --git a/core/trino-main/src/main/java/io/trino/event/QueryMonitor.java b/core/trino-main/src/main/java/io/trino/event/QueryMonitor.java index a00271dfa078..15388f57c94e 100644 --- a/core/trino-main/src/main/java/io/trino/event/QueryMonitor.java +++ b/core/trino-main/src/main/java/io/trino/event/QueryMonitor.java @@ -254,8 +254,9 @@ private QueryMetadata createQueryMetadata(QueryInfo queryInfo) private QueryStatistics createQueryStatistics(QueryInfo queryInfo) { - ImmutableList.Builder operatorSummaries = ImmutableList.builder(); - for (OperatorStats summary : queryInfo.getQueryStats().getOperatorSummaries()) { + List operatorStats = queryInfo.getQueryStats().getOperatorSummaries(); + ImmutableList.Builder operatorSummaries = ImmutableList.builderWithExpectedSize(operatorStats.size()); + for (OperatorStats summary : operatorStats) { operatorSummaries.add(operatorStatsCodec.toJson(summary)); } @@ -350,7 +351,7 @@ private static QueryIOMetadata getQueryIOMetadata(QueryInfo queryInfo) { Multimap planNodeStats = extractPlanNodeStats(queryInfo); - ImmutableList.Builder inputs = ImmutableList.builder(); + ImmutableList.Builder inputs = ImmutableList.builderWithExpectedSize(queryInfo.getInputs().size()); for (Input input : queryInfo.getInputs()) { // Note: input table can be mapped to multiple operators Collection inputTableOperatorStats = planNodeStats.get(new FragmentNode(input.getFragmentId(), input.getPlanNodeId())); diff --git a/core/trino-main/src/main/java/io/trino/execution/ExecutionFailureInfo.java b/core/trino-main/src/main/java/io/trino/execution/ExecutionFailureInfo.java index ef9d29b19199..41c407b042da 100644 --- a/core/trino-main/src/main/java/io/trino/execution/ExecutionFailureInfo.java +++ b/core/trino-main/src/main/java/io/trino/execution/ExecutionFailureInfo.java @@ -147,7 +147,7 @@ private static Failure toException(ExecutionFailureInfo executionFailureInfo) for (ExecutionFailureInfo suppressed : executionFailureInfo.getSuppressed()) { failure.addSuppressed(toException(suppressed)); } - ImmutableList.Builder stackTraceBuilder = ImmutableList.builder(); + ImmutableList.Builder stackTraceBuilder = ImmutableList.builderWithExpectedSize(executionFailureInfo.getStack().size()); for (String stack : executionFailureInfo.getStack()) { stackTraceBuilder.add(toStackTraceElement(stack)); } diff --git a/core/trino-main/src/main/java/io/trino/execution/buffer/ArbitraryOutputBuffer.java b/core/trino-main/src/main/java/io/trino/execution/buffer/ArbitraryOutputBuffer.java index 1d2c3232348b..2e7799e45ef5 100644 --- a/core/trino-main/src/main/java/io/trino/execution/buffer/ArbitraryOutputBuffer.java +++ b/core/trino-main/src/main/java/io/trino/execution/buffer/ArbitraryOutputBuffer.java @@ -132,7 +132,7 @@ public OutputBufferInfo getInfo() Collection buffers = this.buffers.values(); int totalBufferedPages = masterBuffer.getBufferedPages(); - ImmutableList.Builder infos = ImmutableList.builder(); + ImmutableList.Builder infos = ImmutableList.builderWithExpectedSize(buffers.size()); for (ClientBuffer buffer : buffers) { BufferInfo bufferInfo = buffer.getInfo(); infos.add(bufferInfo); diff --git a/core/trino-main/src/main/java/io/trino/execution/buffer/PartitionedOutputBuffer.java b/core/trino-main/src/main/java/io/trino/execution/buffer/PartitionedOutputBuffer.java index 4cf5b3aae851..b5b3677d8735 100644 --- a/core/trino-main/src/main/java/io/trino/execution/buffer/PartitionedOutputBuffer.java +++ b/core/trino-main/src/main/java/io/trino/execution/buffer/PartitionedOutputBuffer.java @@ -71,7 +71,7 @@ public PartitionedOutputBuffer( requireNonNull(notificationExecutor, "notificationExecutor is null")); this.onPagesReleased = PagesReleasedListener.forOutputBufferMemoryManager(memoryManager); - ImmutableList.Builder partitions = ImmutableList.builder(); + ImmutableList.Builder partitions = ImmutableList.builderWithExpectedSize(outputBuffers.getBuffers().keySet().size()); for (OutputBufferId bufferId : outputBuffers.getBuffers().keySet()) { ClientBuffer partition = new ClientBuffer(taskInstanceId, bufferId, onPagesReleased); partitions.add(partition); diff --git a/core/trino-main/src/main/java/io/trino/execution/executor/MultilevelSplitQueue.java b/core/trino-main/src/main/java/io/trino/execution/executor/MultilevelSplitQueue.java index f960d73bd075..8163ebf93850 100644 --- a/core/trino-main/src/main/java/io/trino/execution/executor/MultilevelSplitQueue.java +++ b/core/trino-main/src/main/java/io/trino/execution/executor/MultilevelSplitQueue.java @@ -66,7 +66,7 @@ public MultilevelSplitQueue(double levelTimeMultiplier) { this.levelMinPriority = new AtomicLong[LEVEL_THRESHOLD_SECONDS.length]; this.levelWaitingSplits = new ArrayList<>(LEVEL_THRESHOLD_SECONDS.length); - ImmutableList.Builder counters = ImmutableList.builder(); + ImmutableList.Builder counters = ImmutableList.builderWithExpectedSize(LEVEL_THRESHOLD_SECONDS.length); for (int i = 0; i < LEVEL_THRESHOLD_SECONDS.length; i++) { levelScheduledTime[i] = new AtomicLong(); diff --git a/core/trino-main/src/main/java/io/trino/execution/executor/TaskHandle.java b/core/trino-main/src/main/java/io/trino/execution/executor/TaskHandle.java index b07e21067775..7d66f5204f79 100644 --- a/core/trino-main/src/main/java/io/trino/execution/executor/TaskHandle.java +++ b/core/trino-main/src/main/java/io/trino/execution/executor/TaskHandle.java @@ -124,7 +124,7 @@ public synchronized List destroy() { destroyed = true; - ImmutableList.Builder builder = ImmutableList.builder(); + ImmutableList.Builder builder = ImmutableList.builderWithExpectedSize(runningIntermediateSplits.size() + runningLeafSplits.size() + queuedLeafSplits.size()); builder.addAll(runningIntermediateSplits); builder.addAll(runningLeafSplits); builder.addAll(queuedLeafSplits); diff --git a/core/trino-main/src/test/java/io/trino/RowPageBuilder.java b/core/trino-main/src/test/java/io/trino/RowPageBuilder.java index 24582218ee4c..b63cb19907e2 100644 --- a/core/trino-main/src/test/java/io/trino/RowPageBuilder.java +++ b/core/trino-main/src/test/java/io/trino/RowPageBuilder.java @@ -45,7 +45,7 @@ public static RowPageBuilder rowPageBuilder(Iterable types) RowPageBuilder(Iterable types) { this.types = ImmutableList.copyOf(requireNonNull(types, "types is null")); - ImmutableList.Builder builders = ImmutableList.builder(); + ImmutableList.Builder builders = ImmutableList.builderWithExpectedSize(this.types.size()); for (Type type : types) { builders.add(type.createBlockBuilder(null, 1)); } diff --git a/core/trino-main/src/test/java/io/trino/block/AbstractTestBlock.java b/core/trino-main/src/test/java/io/trino/block/AbstractTestBlock.java index 5aa1f87febc9..24180a016080 100644 --- a/core/trino-main/src/test/java/io/trino/block/AbstractTestBlock.java +++ b/core/trino-main/src/test/java/io/trino/block/AbstractTestBlock.java @@ -194,7 +194,7 @@ private void assertBlockPositions(Block block, Supplier newBlo protected List splitBlock(Block block, int count) { double sizePerSplit = block.getPositionCount() * 1.0 / count; - ImmutableList.Builder result = ImmutableList.builder(); + ImmutableList.Builder result = ImmutableList.builderWithExpectedSize(count); for (int i = 0; i < count; i++) { int startPosition = toIntExact(Math.round(sizePerSplit * i)); int endPosition = toIntExact(Math.round(sizePerSplit * (i + 1))); diff --git a/core/trino-main/src/test/java/io/trino/execution/executor/SimulationTask.java b/core/trino-main/src/test/java/io/trino/execution/executor/SimulationTask.java index 58a3a640283a..ed2ae7c1790c 100644 --- a/core/trino-main/src/test/java/io/trino/execution/executor/SimulationTask.java +++ b/core/trino-main/src/test/java/io/trino/execution/executor/SimulationTask.java @@ -162,7 +162,7 @@ public IntermediateTask(TaskExecutor taskExecutor, TaskSpecification specificati @Override public void schedule(TaskExecutor taskExecutor, int numSplits) { - ImmutableList.Builder splits = ImmutableList.builder(); + ImmutableList.Builder splits = ImmutableList.builderWithExpectedSize(numSplits); for (int i = 0; i < numSplits; i++) { splits.add(splitSpecification.instantiate(this)); } diff --git a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/BaseJdbcClient.java b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/BaseJdbcClient.java index 5ae080b51726..e5c5e44e1d52 100644 --- a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/BaseJdbcClient.java +++ b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/BaseJdbcClient.java @@ -511,10 +511,12 @@ protected JdbcOutputTableHandle createTable(ConnectorSession session, ConnectorT String remoteTargetTableName = identifierMapping.toRemoteTableName(identity, connection, remoteSchema, targetTableName); String catalog = connection.getCatalog(); - ImmutableList.Builder columnNames = ImmutableList.builder(); - ImmutableList.Builder columnTypes = ImmutableList.builder(); - ImmutableList.Builder columnList = ImmutableList.builder(); - for (ColumnMetadata column : tableMetadata.getColumns()) { + List columns = tableMetadata.getColumns(); + ImmutableList.Builder columnNames = ImmutableList.builderWithExpectedSize(columns.size()); + ImmutableList.Builder columnTypes = ImmutableList.builderWithExpectedSize(columns.size()); + ImmutableList.Builder columnList = ImmutableList.builderWithExpectedSize(columns.size()); + + for (ColumnMetadata column : columns) { String columnName = identifierMapping.toRemoteColumnName(connection, column.getName()); columnNames.add(columnName); columnTypes.add(column.getType()); diff --git a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcRecordSet.java b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcRecordSet.java index 40034364c5c4..5bb17274463b 100644 --- a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcRecordSet.java +++ b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcRecordSet.java @@ -43,7 +43,7 @@ public JdbcRecordSet(JdbcClient jdbcClient, ExecutorService executor, ConnectorS this.table = requireNonNull(table, "table is null"); this.columnHandles = requireNonNull(columnHandles, "columnHandles is null"); - ImmutableList.Builder types = ImmutableList.builder(); + ImmutableList.Builder types = ImmutableList.builderWithExpectedSize(columnHandles.size()); for (JdbcColumnHandle column : columnHandles) { types.add(column.getColumnType()); } diff --git a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcRecordSetProvider.java b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcRecordSetProvider.java index afc95e4833c7..45002e05c4cc 100644 --- a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcRecordSetProvider.java +++ b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcRecordSetProvider.java @@ -57,7 +57,7 @@ public RecordSet getRecordSet(ConnectorTransactionHandle transaction, ConnectorS jdbcTable.getColumns() .ifPresent(tableColumns -> verify(ImmutableSet.copyOf(tableColumns).containsAll(columns))); - ImmutableList.Builder handles = ImmutableList.builder(); + ImmutableList.Builder handles = ImmutableList.builderWithExpectedSize(columns.size()); for (ColumnHandle handle : columns) { handles.add((JdbcColumnHandle) handle); }