You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jj...@apache.org on 2017/12/03 07:31:09 UTC

cassandra git commit: Presize collections

Repository: cassandra
Updated Branches:
  refs/heads/trunk b04e4136f -> 95b43b195


Presize collections

Patch by Dave Brosius; Reviewed by Jeff Jirsa for CASSANDRA-13760


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/95b43b19
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/95b43b19
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/95b43b19

Branch: refs/heads/trunk
Commit: 95b43b195e4074533100f863344c182a118a8b6c
Parents: b04e413
Author: Jeff Jirsa <jj...@apple.com>
Authored: Wed Aug 30 20:43:56 2017 -0700
Committer: Jeff Jirsa <jj...@apple.com>
Committed: Sat Dec 2 23:30:41 2017 -0800

----------------------------------------------------------------------
 src/java/org/apache/cassandra/auth/FunctionResource.java  |  2 +-
 src/java/org/apache/cassandra/cql3/Relation.java          |  2 +-
 .../apache/cassandra/cql3/statements/SelectStatement.java |  9 +++++----
 .../apache/cassandra/db/AbstractReadCommandBuilder.java   |  4 +++-
 .../apache/cassandra/db/ColumnFamilyStoreCQLHelper.java   |  4 ++--
 src/java/org/apache/cassandra/db/Directories.java         |  6 ++++--
 src/java/org/apache/cassandra/db/commitlog/CommitLog.java |  7 ++++---
 .../db/compaction/AbstractCompactionStrategy.java         |  4 ++--
 .../apache/cassandra/db/compaction/CompactionManager.java |  2 +-
 .../db/compaction/CompactionStrategyManager.java          | 10 ++++++----
 .../db/compaction/DateTieredCompactionStrategy.java       |  2 +-
 .../db/compaction/LeveledCompactionStrategy.java          |  4 ++--
 src/java/org/apache/cassandra/db/view/ViewManager.java    |  7 +++++--
 .../org/apache/cassandra/dht/ByteOrderedPartitioner.java  |  6 ++++--
 .../apache/cassandra/gms/GossipDigestSynVerbHandler.java  |  4 +++-
 .../org/apache/cassandra/hadoop/cql3/CqlInputFormat.java  |  9 +++++----
 .../cassandra/index/sasi/disk/PerSSTableIndexWriter.java  |  3 ++-
 .../apache/cassandra/index/sasi/plan/QueryController.java |  5 +++--
 src/java/org/apache/cassandra/io/sstable/Descriptor.java  |  2 +-
 src/java/org/apache/cassandra/io/sstable/SSTable.java     |  2 +-
 src/java/org/apache/cassandra/repair/RepairJobDesc.java   |  2 +-
 .../cassandra/repair/SystemDistributedKeyspace.java       |  2 +-
 .../repair/consistent/PendingAntiCompaction.java          |  5 +++--
 src/java/org/apache/cassandra/schema/Indexes.java         |  3 ++-
 src/java/org/apache/cassandra/schema/Types.java           |  2 +-
 src/java/org/apache/cassandra/utils/concurrent/Ref.java   |  2 +-
 26 files changed, 65 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/auth/FunctionResource.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/auth/FunctionResource.java b/src/java/org/apache/cassandra/auth/FunctionResource.java
index f9f51d5..2c09c05 100644
--- a/src/java/org/apache/cassandra/auth/FunctionResource.java
+++ b/src/java/org/apache/cassandra/auth/FunctionResource.java
@@ -150,7 +150,7 @@ public class FunctionResource implements IResource
         if (keyspace == null)
             throw new InvalidRequestException("In this context function name must be " +
                                               "explictly qualified by a keyspace");
-        List<AbstractType<?>> abstractTypes = new ArrayList<>();
+        List<AbstractType<?>> abstractTypes = new ArrayList<>(argTypes.size());
         for (CQL3Type.Raw cqlType : argTypes)
             abstractTypes.add(cqlType.prepare(keyspace).getType());
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/cql3/Relation.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/Relation.java b/src/java/org/apache/cassandra/cql3/Relation.java
index 1d27874..0dcb3fa 100644
--- a/src/java/org/apache/cassandra/cql3/Relation.java
+++ b/src/java/org/apache/cassandra/cql3/Relation.java
@@ -243,7 +243,7 @@ public abstract class Relation
         if (raws == null)
             return null;
 
-        List<Term> terms = new ArrayList<>();
+        List<Term> terms = new ArrayList<>(raws.size());
         for (int i = 0, m = raws.size(); i < m; i++)
             terms.add(toTerm(receivers, raws.get(i), keyspace, boundNames));
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index 84fef5e..3754ee6 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -21,6 +21,7 @@ import java.nio.ByteBuffer;
 import java.util.*;
 
 import com.google.common.base.MoreObjects;
+import com.google.common.collect.Maps;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -1108,7 +1109,7 @@ public class SelectStatement implements CQLStatement
          * @param metadata the table metadata
          * @param selection the selection
          * @param restrictions the restrictions
-         * @param isDistinct <code>true</code> if the query is a DISTINCT one. 
+         * @param isDistinct <code>true</code> if the query is a DISTINCT one.
          * @return the <code>AggregationSpecification</code>s used to make the aggregates
          */
         private AggregationSpecification getAggregationSpecification(TableMetadata metadata,
@@ -1170,8 +1171,8 @@ public class SelectStatement implements CQLStatement
 
             Map<ColumnIdentifier, Integer> orderingIndexes = getOrderingIndex(metadata, selection, orderingColumns);
 
-            List<Integer> idToSort = new ArrayList<Integer>();
-            List<Comparator<ByteBuffer>> sorters = new ArrayList<Comparator<ByteBuffer>>();
+            List<Integer> idToSort = new ArrayList<Integer>(orderingColumns.size());
+            List<Comparator<ByteBuffer>> sorters = new ArrayList<Comparator<ByteBuffer>>(orderingColumns.size());
 
             for (ColumnMetadata orderingColumn : orderingColumns.keySet())
             {
@@ -1186,7 +1187,7 @@ public class SelectStatement implements CQLStatement
                                                                 Selection selection,
                                                                 Map<ColumnMetadata, Boolean> orderingColumns)
         {
-            Map<ColumnIdentifier, Integer> orderingIndexes = new HashMap<>();
+            Map<ColumnIdentifier, Integer> orderingIndexes = Maps.newHashMapWithExpectedSize(orderingColumns.size());
             for (ColumnMetadata def : orderingColumns.keySet())
             {
                 int index = selection.getResultSetIndex(def);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/AbstractReadCommandBuilder.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/AbstractReadCommandBuilder.java b/src/java/org/apache/cassandra/db/AbstractReadCommandBuilder.java
index 481e906..4df1bd3 100644
--- a/src/java/org/apache/cassandra/db/AbstractReadCommandBuilder.java
+++ b/src/java/org/apache/cassandra/db/AbstractReadCommandBuilder.java
@@ -21,6 +21,8 @@ package org.apache.cassandra.db;
 import java.nio.ByteBuffer;
 import java.util.*;
 
+import com.google.common.collect.Sets;
+
 import org.apache.cassandra.schema.ColumnMetadata;
 import org.apache.cassandra.schema.TableMetadata;
 import org.apache.cassandra.cql3.ColumnIdentifier;
@@ -121,7 +123,7 @@ public abstract class AbstractReadCommandBuilder
     public AbstractReadCommandBuilder columns(String... columns)
     {
         if (this.columns == null)
-            this.columns = new HashSet<>();
+            this.columns = Sets.newHashSetWithExpectedSize(columns.length);
 
         for (String column : columns)
             this.columns.add(ColumnIdentifier.getInterned(column, true));

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/ColumnFamilyStoreCQLHelper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStoreCQLHelper.java b/src/java/org/apache/cassandra/db/ColumnFamilyStoreCQLHelper.java
index d79fa0f..740ef3f 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStoreCQLHelper.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStoreCQLHelper.java
@@ -217,7 +217,7 @@ public class ColumnFamilyStoreCQLHelper
                 resolveUserType((UserType) type, typeSet, types);
         }
 
-        List<String> typeStrings = new ArrayList<>();
+        List<String> typeStrings = new ArrayList<>(types.size());
         for (AbstractType type: types)
             typeStrings.add(toCQL((UserType) type));
         return typeStrings;
@@ -250,7 +250,7 @@ public class ColumnFamilyStoreCQLHelper
     @VisibleForTesting
     public static List<String> getIndexesAsCQL(TableMetadata metadata)
     {
-        List<String> indexes = new ArrayList<>();
+        List<String> indexes = new ArrayList<>(metadata.indexes.size());
         for (IndexMetadata indexMetadata: metadata.indexes)
             indexes.add(toCQL(metadata, indexMetadata));
         return indexes;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/Directories.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Directories.java b/src/java/org/apache/cassandra/db/Directories.java
index 88d909d..514f8fd 100644
--- a/src/java/org/apache/cassandra/db/Directories.java
+++ b/src/java/org/apache/cassandra/db/Directories.java
@@ -29,6 +29,7 @@ import java.util.function.BiPredicate;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
+import com.google.common.collect.Maps;
 
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -778,8 +779,9 @@ public class Directories
      */
     public Map<String, Pair<Long, Long>> getSnapshotDetails()
     {
-        final Map<String, Pair<Long, Long>> snapshotSpaceMap = new HashMap<>();
-        for (File snapshot : listSnapshots())
+        List<File> snapshots = listSnapshots();
+        final Map<String, Pair<Long, Long>> snapshotSpaceMap = Maps.newHashMapWithExpectedSize(snapshots.size());
+        for (File snapshot : snapshots)
         {
             final long sizeOnDisk = FileUtils.folderSize(snapshot);
             final long trueSize = getTrueAllocatedSizeIn(snapshot);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLog.java b/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
index 3a7c792..68075ac 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
@@ -146,7 +146,7 @@ public class CommitLog implements CommitLogMBean
 
         // submit all files for this segment manager for archiving prior to recovery - CASSANDRA-6904
         // The files may have already been archived by normal CommitLog operation. This may cause errors in this
-        // archiving pass, which we should not treat as serious. 
+        // archiving pass, which we should not treat as serious.
         for (File file : new File(segmentManager.storageDirectory).listFiles(unmanagedFilesFilter))
         {
             archiver.maybeArchive(file.getPath(), file.getName());
@@ -375,8 +375,9 @@ public class CommitLog implements CommitLogMBean
 
     public List<String> getActiveSegmentNames()
     {
-        List<String> segmentNames = new ArrayList<>();
-        for (CommitLogSegment seg : segmentManager.getActiveSegments())
+        Collection<CommitLogSegment> segments = segmentManager.getActiveSegments();
+        List<String> segmentNames = new ArrayList<>(segments.size());
+        for (CommitLogSegment seg : segments)
             segmentNames.add(seg.getName());
         return segmentNames;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
index f1f42a7..0a07ce6 100644
--- a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
@@ -539,7 +539,7 @@ public abstract class AbstractCompactionStrategy
         Collections.sort(sortedSSTablesToGroup, SSTableReader.sstableComparator);
 
         Collection<Collection<SSTableReader>> groupedSSTables = new ArrayList<>();
-        Collection<SSTableReader> currGroup = new ArrayList<>();
+        Collection<SSTableReader> currGroup = new ArrayList<>(groupSize);
 
         for (SSTableReader sstable : sortedSSTablesToGroup)
         {
@@ -547,7 +547,7 @@ public abstract class AbstractCompactionStrategy
             if (currGroup.size() == groupSize)
             {
                 groupedSSTables.add(currGroup);
-                currGroup = new ArrayList<>();
+                currGroup = new ArrayList<>(groupSize);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index a615c03..9b1997f 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -809,7 +809,7 @@ public class CompactionManager implements CompactionManagerMBean
             descriptors.put(cfs, cfs.getDirectories().find(new File(filename.trim()).getName()));
         }
 
-        List<Future<?>> futures = new ArrayList<>();
+        List<Future<?>> futures = new ArrayList<>(descriptors.size());
         int nowInSec = FBUtilities.nowInSeconds();
         for (ColumnFamilyStore cfs : descriptors.keySet())
             futures.add(submitUserDefined(cfs, descriptors.get(cfs), getDefaultGcBefore(cfs, nowInSec)));

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
index 1b3ddb5..0260bb8 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
@@ -725,11 +725,13 @@ public class CompactionStrategyManager implements INotificationConsumer
     {
         assert repaired.size() == unrepaired.size();
         assert repaired.size() == pendingRepairs.size();
-        List<Set<SSTableReader>> pendingSSTables = new ArrayList<>();
-        List<Set<SSTableReader>> repairedSSTables = new ArrayList<>();
-        List<Set<SSTableReader>> unrepairedSSTables = new ArrayList<>();
 
-        for (int i = 0; i < repaired.size(); i++)
+        int numRepaired = repaired.size();
+        List<Set<SSTableReader>> pendingSSTables = new ArrayList<>(numRepaired);
+        List<Set<SSTableReader>> repairedSSTables = new ArrayList<>(numRepaired);
+        List<Set<SSTableReader>> unrepairedSSTables = new ArrayList<>(numRepaired);
+
+        for (int i = 0; i < numRepaired; i++)
         {
             pendingSSTables.add(new HashSet<>());
             repairedSSTables.add(new HashSet<>());

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
index 49fa0b6..2c5b3e8 100644
--- a/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
@@ -461,7 +461,7 @@ public class DateTieredCompactionStrategy extends AbstractCompactionStrategy
     @Override
     public Collection<Collection<SSTableReader>> groupSSTablesForAntiCompaction(Collection<SSTableReader> sstablesToGroup)
     {
-        Collection<Collection<SSTableReader>> groups = new ArrayList<>();
+        Collection<Collection<SSTableReader>> groups = new ArrayList<>(sstablesToGroup.size());
         for (SSTableReader sstable : sstablesToGroup)
         {
             groups.add(Collections.singleton(sstable));

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
index 4285424..1c40a6a 100644
--- a/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
@@ -235,14 +235,14 @@ public class LeveledCompactionStrategy extends AbstractCompactionStrategy
 
         for (Collection<SSTableReader> levelOfSSTables : sstablesByLevel.values())
         {
-            Collection<SSTableReader> currGroup = new ArrayList<>();
+            Collection<SSTableReader> currGroup = new ArrayList<>(groupSize);
             for (SSTableReader sstable : levelOfSSTables)
             {
                 currGroup.add(sstable);
                 if (currGroup.size() == groupSize)
                 {
                     groupedSSTables.add(currGroup);
-                    currGroup = new ArrayList<>();
+                    currGroup = new ArrayList<>(groupSize);
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/view/ViewManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/view/ViewManager.java b/src/java/org/apache/cassandra/db/view/ViewManager.java
index 8506d82..8d12349 100644
--- a/src/java/org/apache/cassandra/db/view/ViewManager.java
+++ b/src/java/org/apache/cassandra/db/view/ViewManager.java
@@ -22,6 +22,7 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.Lock;
 
+import com.google.common.collect.Maps;
 import com.google.common.util.concurrent.Striped;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -32,6 +33,7 @@ import org.apache.cassandra.schema.ViewMetadata;
 import org.apache.cassandra.db.*;
 import org.apache.cassandra.db.partitions.*;
 import org.apache.cassandra.repair.SystemDistributedKeyspace;
+import org.apache.cassandra.schema.Views;
 import org.apache.cassandra.service.StorageService;
 
 /**
@@ -95,8 +97,9 @@ public class ViewManager
 
     public void reload(boolean buildAllViews)
     {
-        Map<String, ViewMetadata> newViewsByName = new HashMap<>();
-        for (ViewMetadata definition : keyspace.getMetadata().views)
+        Views views = keyspace.getMetadata().views;
+        Map<String, ViewMetadata> newViewsByName = Maps.newHashMapWithExpectedSize(views.size());
+        for (ViewMetadata definition : views)
         {
             newViewsByName.put(definition.name, definition);
         }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/dht/ByteOrderedPartitioner.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/dht/ByteOrderedPartitioner.java b/src/java/org/apache/cassandra/dht/ByteOrderedPartitioner.java
index ff7f2f7..08088f7 100644
--- a/src/java/org/apache/cassandra/dht/ByteOrderedPartitioner.java
+++ b/src/java/org/apache/cassandra/dht/ByteOrderedPartitioner.java
@@ -43,6 +43,8 @@ import java.util.Map;
 import java.util.Random;
 import java.util.concurrent.ThreadLocalRandom;
 
+import com.google.common.collect.Maps;
+
 public class ByteOrderedPartitioner implements IPartitioner
 {
     public static final BytesToken MINIMUM = new BytesToken(ArrayUtils.EMPTY_BYTE_ARRAY);
@@ -219,7 +221,7 @@ public class ByteOrderedPartitioner implements IPartitioner
         return new BytesToken(buffer);
     }
 
-    private final Token.TokenFactory tokenFactory = new Token.TokenFactory() 
+    private final Token.TokenFactory tokenFactory = new Token.TokenFactory()
     {
         public ByteBuffer toByteArray(Token token)
         {
@@ -273,7 +275,7 @@ public class ByteOrderedPartitioner implements IPartitioner
     public Map<Token, Float> describeOwnership(List<Token> sortedTokens)
     {
         // allTokens will contain the count and be returned, sorted_ranges is shorthand for token<->token math.
-        Map<Token, Float> allTokens = new HashMap<Token, Float>();
+        Map<Token, Float> allTokens = Maps.newHashMapWithExpectedSize(sortedTokens.size());
         List<Range<Token>> sortedRanges = new ArrayList<Range<Token>>(sortedTokens.size());
 
         // this initializes the counts to 0 and calcs the ranges in order.

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java b/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
index 6d0afa2..ddfafc9 100644
--- a/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
+++ b/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
@@ -20,6 +20,8 @@ package org.apache.cassandra.gms;
 import java.net.InetAddress;
 import java.util.*;
 
+import com.google.common.collect.Maps;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -121,7 +123,7 @@ public class GossipDigestSynVerbHandler implements IVerbHandler<GossipDigestSyn>
     private void doSort(List<GossipDigest> gDigestList)
     {
         /* Construct a map of endpoint to GossipDigest. */
-        Map<InetAddress, GossipDigest> epToDigestMap = new HashMap<InetAddress, GossipDigest>();
+        Map<InetAddress, GossipDigest> epToDigestMap = Maps.newHashMapWithExpectedSize(gDigestList.size());
         for (GossipDigest gDigest : gDigestList)
         {
             epToDigestMap.put(gDigest.getEndpoint(), gDigest);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/hadoop/cql3/CqlInputFormat.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/hadoop/cql3/CqlInputFormat.java b/src/java/org/apache/cassandra/hadoop/cql3/CqlInputFormat.java
index 9259042..eae1fa2 100644
--- a/src/java/org/apache/cassandra/hadoop/cql3/CqlInputFormat.java
+++ b/src/java/org/apache/cassandra/hadoop/cql3/CqlInputFormat.java
@@ -28,6 +28,7 @@ import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.Row;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.TokenRange;
+import com.google.common.collect.Maps;
 
 import org.apache.cassandra.schema.SchemaConstants;
 import org.apache.hadoop.conf.Configuration;
@@ -50,7 +51,7 @@ import static java.util.stream.Collectors.toMap;
 /**
  * Hadoop InputFormat allowing map/reduce against Cassandra rows within one ColumnFamily.
  *
- * At minimum, you need to set the KS and CF in your Hadoop job Configuration.  
+ * At minimum, you need to set the KS and CF in your Hadoop job Configuration.
  * The ConfigHelper class is provided to make this
  * simple:
  *   ConfigHelper.setInputColumnFamily
@@ -62,10 +63,10 @@ import static java.util.stream.Collectors.toMap;
  *   If no value is provided for InputSplitSizeInMb, we default to using InputSplitSize.
  *
  *   CQLConfigHelper.setInputCQLPageRowSize. The default page row size is 1000. You
- *   should set it to "as big as possible, but no bigger." It set the LIMIT for the CQL 
+ *   should set it to "as big as possible, but no bigger." It set the LIMIT for the CQL
  *   query, so you need set it big enough to minimize the network overhead, and also
  *   not too big to avoid out of memory issue.
- *   
+ *
  *   other native protocol connection parameters in CqlConfigHelper
  */
 public class CqlInputFormat extends org.apache.hadoop.mapreduce.InputFormat<Long, Row> implements org.apache.hadoop.mapred.InputFormat<Long, Row>
@@ -254,7 +255,7 @@ public class CqlInputFormat extends org.apache.hadoop.mapreduce.InputFormat<Long
         }
 
         List<TokenRange> splitRanges = tokenRange.splitEvenly(splitCount);
-        Map<TokenRange, Long> rangesWithLength = new HashMap<>();
+        Map<TokenRange, Long> rangesWithLength = Maps.newHashMapWithExpectedSize(splitRanges.size());
         for (TokenRange range : splitRanges)
             rangesWithLength.put(range, partitionCount/splitCount);
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java b/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java
index a63c9a2..b1ce521 100644
--- a/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java
+++ b/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java
@@ -45,6 +45,7 @@ import org.apache.cassandra.utils.FBUtilities;
 import org.apache.cassandra.utils.Pair;
 
 import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Maps;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.Uninterruptibles;
 
@@ -96,7 +97,7 @@ public class PerSSTableIndexWriter implements SSTableFlushObserver
         this.keyValidator = keyValidator;
         this.descriptor = descriptor;
         this.source = source;
-        this.indexes = new HashMap<>();
+        this.indexes = Maps.newHashMapWithExpectedSize(supportedIndexes.size());
         for (Map.Entry<ColumnMetadata, ColumnIndex> entry : supportedIndexes.entrySet())
             indexes.put(entry.getKey(), newIndex(entry.getValue()));
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java b/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java
index c6aa7ee..db16c52 100644
--- a/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java
+++ b/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java
@@ -136,9 +136,10 @@ public class QueryController
                                                 ? RangeUnionIterator.<Long, Token>builder()
                                                 : RangeIntersectionIterator.<Long, Token>builder();
 
-        List<RangeIterator<Long, Token>> perIndexUnions = new ArrayList<>();
+        Set<Map.Entry<Expression, Set<SSTableIndex>>> view = getView(op, expressions).entrySet();
+        List<RangeIterator<Long, Token>> perIndexUnions = new ArrayList<>(view.size());
 
-        for (Map.Entry<Expression, Set<SSTableIndex>> e : getView(op, expressions).entrySet())
+        for (Map.Entry<Expression, Set<SSTableIndex>> e : view)
         {
             @SuppressWarnings("resource") // RangeIterators are closed by releaseIndexes
             RangeIterator<Long, Token> index = TermIterator.build(e.getKey(), e.getValue());

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/io/sstable/Descriptor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/Descriptor.java b/src/java/org/apache/cassandra/io/sstable/Descriptor.java
index 36943ff..3e4ba51 100644
--- a/src/java/org/apache/cassandra/io/sstable/Descriptor.java
+++ b/src/java/org/apache/cassandra/io/sstable/Descriptor.java
@@ -150,10 +150,10 @@ public class Descriptor
     /** Return any temporary files found in the directory */
     public List<File> getTemporaryFiles()
     {
-        List<File> ret = new ArrayList<>();
         File[] tmpFiles = directory.listFiles((dir, name) ->
                                               name.endsWith(Descriptor.TMP_EXT));
 
+        List<File> ret = new ArrayList<>(tmpFiles.length);
         for (File tmpFile : tmpFiles)
             ret.add(tmpFile);
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/io/sstable/SSTable.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTable.java b/src/java/org/apache/cassandra/io/sstable/SSTable.java
index f4d3706..40f8223 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTable.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTable.java
@@ -170,7 +170,7 @@ public abstract class SSTable
 
     public List<String> getAllFilePaths()
     {
-        List<String> ret = new ArrayList<>();
+        List<String> ret = new ArrayList<>(components.size());
         for (Component component : components)
             ret.add(descriptor.filenameFor(component));
         return ret;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/repair/RepairJobDesc.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/repair/RepairJobDesc.java b/src/java/org/apache/cassandra/repair/RepairJobDesc.java
index 8f70e00..7e7de07 100644
--- a/src/java/org/apache/cassandra/repair/RepairJobDesc.java
+++ b/src/java/org/apache/cassandra/repair/RepairJobDesc.java
@@ -122,7 +122,7 @@ public class RepairJobDesc
             String columnFamily = in.readUTF();
 
             int nRanges = in.readInt();
-            Collection<Range<Token>> ranges = new ArrayList<>();
+            Collection<Range<Token>> ranges = new ArrayList<>(nRanges);
             Range<Token> range;
 
             for (int i = 0; i < nRanges; i++)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/repair/SystemDistributedKeyspace.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/repair/SystemDistributedKeyspace.java b/src/java/org/apache/cassandra/repair/SystemDistributedKeyspace.java
index 6ebd756..3770621 100644
--- a/src/java/org/apache/cassandra/repair/SystemDistributedKeyspace.java
+++ b/src/java/org/apache/cassandra/repair/SystemDistributedKeyspace.java
@@ -304,7 +304,7 @@ public final class SystemDistributedKeyspace
     {
         try
         {
-            List<ByteBuffer> valueList = new ArrayList<>();
+            List<ByteBuffer> valueList = new ArrayList<>(values.length);
             for (String v : values)
             {
                 valueList.add(bytes(v));

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/repair/consistent/PendingAntiCompaction.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/repair/consistent/PendingAntiCompaction.java b/src/java/org/apache/cassandra/repair/consistent/PendingAntiCompaction.java
index 70251f6..dc3b45d 100644
--- a/src/java/org/apache/cassandra/repair/consistent/PendingAntiCompaction.java
+++ b/src/java/org/apache/cassandra/repair/consistent/PendingAntiCompaction.java
@@ -186,8 +186,9 @@ public class PendingAntiCompaction
     public ListenableFuture run()
     {
         ActiveRepairService.ParentRepairSession prs = ActiveRepairService.instance.getParentRepairSession(prsId);
-        List<ListenableFutureTask<AcquireResult>> tasks = new ArrayList<>();
-        for (ColumnFamilyStore cfs : prs.getColumnFamilyStores())
+        Collection<ColumnFamilyStore> cfss = prs.getColumnFamilyStores();
+        List<ListenableFutureTask<AcquireResult>> tasks = new ArrayList<>(cfss.size());
+        for (ColumnFamilyStore cfs : cfss)
         {
             cfs.forceBlockingFlush();
             ListenableFutureTask<AcquireResult> task = ListenableFutureTask.create(new AcquisitionCallable(cfs, ranges, prsId));

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/schema/Indexes.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/schema/Indexes.java b/src/java/org/apache/cassandra/schema/Indexes.java
index 81d400e..6122197 100644
--- a/src/java/org/apache/cassandra/schema/Indexes.java
+++ b/src/java/org/apache/cassandra/schema/Indexes.java
@@ -21,6 +21,7 @@ import java.util.*;
 import java.util.stream.Stream;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Sets;
 
 import org.apache.cassandra.exceptions.ConfigurationException;
 
@@ -173,7 +174,7 @@ public final class Indexes implements Iterable<IndexMetadata>
          * The reason for this is that schema altering statements are not calling
          * Keyspaces.validate() as of yet. TODO: remove this once they do (on CASSANDRA-9425 completion)
          */
-        Set<String> indexNames = new HashSet<>();
+        Set<String> indexNames = Sets.newHashSetWithExpectedSize(indexesByName.size());
         for (IndexMetadata index : indexesByName.values())
         {
             if (indexNames.contains(index.name))

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/schema/Types.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/schema/Types.java b/src/java/org/apache/cassandra/schema/Types.java
index c2d8aac..0bdf7cf 100644
--- a/src/java/org/apache/cassandra/schema/Types.java
+++ b/src/java/org/apache/cassandra/schema/Types.java
@@ -231,7 +231,7 @@ public final class Types implements Iterable<UserType>
             /*
              * build a DAG of UDT dependencies
              */
-            Map<RawUDT, Integer> vertices = new HashMap<>(); // map values are numbers of referenced types
+            Map<RawUDT, Integer> vertices = Maps.newHashMapWithExpectedSize(definitions.size()); // map values are numbers of referenced types
             for (RawUDT udt : definitions)
                 vertices.put(udt, 0);
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/utils/concurrent/Ref.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/concurrent/Ref.java b/src/java/org/apache/cassandra/utils/concurrent/Ref.java
index 3383186..b69e6bf 100644
--- a/src/java/org/apache/cassandra/utils/concurrent/Ref.java
+++ b/src/java/org/apache/cassandra/utils/concurrent/Ref.java
@@ -697,7 +697,7 @@ public final class Ref<T> implements RefCounted<T>
             this.candidates.retainAll(candidates);
             if (!this.candidates.isEmpty())
             {
-                List<String> names = new ArrayList<>();
+                List<String> names = new ArrayList<>(this.candidates.size());
                 for (Tidy tidy : this.candidates)
                     names.add(tidy.name());
                 logger.warn("Strong reference leak candidates detected: {}", names);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org