HHH-13496 Some collection constructors could benefit from size hinting

This commit is contained in:
Sanne Grinovero 2019-07-05 15:03:03 +01:00
parent 18e8c04d4d
commit 35b67bd00e
19 changed files with 24 additions and 52 deletions

View File

@ -108,8 +108,7 @@ public class BulkOperationCleanupAction implements Executable, Serializable {
*/ */
@SuppressWarnings({ "unchecked" }) @SuppressWarnings({ "unchecked" })
public BulkOperationCleanupAction(SharedSessionContractImplementor session, Set tableSpaces) { public BulkOperationCleanupAction(SharedSessionContractImplementor session, Set tableSpaces) {
final LinkedHashSet<String> spacesList = new LinkedHashSet<>(); final LinkedHashSet<String> spacesList = new LinkedHashSet<>( tableSpaces );
spacesList.addAll( tableSpaces );
final SessionFactoryImplementor factory = session.getFactory(); final SessionFactoryImplementor factory = session.getFactory();
final MetamodelImplementor metamodel = factory.getMetamodel(); final MetamodelImplementor metamodel = factory.getMetamodel();

View File

@ -1691,8 +1691,7 @@ public class InFlightMetadataCollectorImpl implements InFlightMetadataCollector
ArrayList<CopyIdentifierComponentSecondPass> sorted = ArrayList<CopyIdentifierComponentSecondPass> sorted =
new ArrayList<>( copyIdentifierComponentSecondPasList.size() ); new ArrayList<>( copyIdentifierComponentSecondPasList.size() );
Set<CopyIdentifierComponentSecondPass> toSort = new HashSet<>(); Set<CopyIdentifierComponentSecondPass> toSort = new HashSet<>( copyIdentifierComponentSecondPasList );
toSort.addAll( copyIdentifierComponentSecondPasList );
topologicalSort( sorted, toSort ); topologicalSort( sorted, toSort );
copyIdentifierComponentSecondPasList = sorted; copyIdentifierComponentSecondPasList = sorted;
} }

View File

@ -33,8 +33,7 @@ public class CommaSeparatedStringHelper {
return Collections.emptySet(); return Collections.emptySet();
} }
HashSet<String> set = new HashSet<String>(); HashSet<String> set = new HashSet<String>( x );
set.addAll( x );
if ( values != null && !values.isEmpty() ) { if ( values != null && !values.isEmpty() ) {
Collections.addAll( set, values.split( "\\s*,\\s*" ) ); Collections.addAll( set, values.split( "\\s*,\\s*" ) );
} }

View File

@ -278,8 +278,7 @@ public class StandardServiceRegistryBuilder {
applyServiceContributingIntegrators(); applyServiceContributingIntegrators();
applyServiceContributors(); applyServiceContributors();
final Map settingsCopy = new HashMap(); final Map settingsCopy = new HashMap( settings );
settingsCopy.putAll( settings );
settingsCopy.put( org.hibernate.boot.cfgxml.spi.CfgXmlAccessService.LOADED_CONFIG_KEY, aggregatedCfgXml ); settingsCopy.put( org.hibernate.boot.cfgxml.spi.CfgXmlAccessService.LOADED_CONFIG_KEY, aggregatedCfgXml );
ConfigurationHelper.resolvePlaceHolders( settingsCopy ); ConfigurationHelper.resolvePlaceHolders( settingsCopy );

View File

@ -105,9 +105,7 @@ public class ClassLoaderServiceImpl implements ClassLoaderService {
final Collection<ClassLoader> classLoaders = (Collection<ClassLoader>) configValues.get( AvailableSettings.CLASSLOADERS ); final Collection<ClassLoader> classLoaders = (Collection<ClassLoader>) configValues.get( AvailableSettings.CLASSLOADERS );
if ( classLoaders != null ) { if ( classLoaders != null ) {
for ( ClassLoader classLoader : classLoaders ) { providedClassLoaders.addAll( classLoaders );
providedClassLoaders.add( classLoader );
}
} }
addIfSet( providedClassLoaders, AvailableSettings.APP_CLASSLOADER, configValues ); addIfSet( providedClassLoaders, AvailableSettings.APP_CLASSLOADER, configValues );

View File

@ -2808,8 +2808,7 @@ public final class AnnotationBinder {
buildingContext.getMetadataCollector().addSecondPass( secondPass ); buildingContext.getMetadataCollector().addSecondPass( secondPass );
} }
else { else {
Map<String, IdentifierGeneratorDefinition> localGenerators = new HashMap<>(); Map<String, IdentifierGeneratorDefinition> localGenerators = new HashMap<>( buildGenerators( property, buildingContext ) );
localGenerators.putAll( buildGenerators( property, buildingContext ) );
BinderHelper.makeIdGenerator( BinderHelper.makeIdGenerator(
(SimpleValue) comp.getProperty( property.getName() ).getValue(), (SimpleValue) comp.getProperty( property.getName() ).getValue(),
property, property,

View File

@ -74,10 +74,7 @@ public class PersistentBag extends AbstractPersistentCollection implements List
bag = (List) coll; bag = (List) coll;
} }
else { else {
bag = new ArrayList(); bag = new ArrayList( coll );
for ( Object element : coll ) {
bag.add( element );
}
} }
setInitialized(); setInitialized();
setDirectlyAccessible( true ); setDirectlyAccessible( true );

View File

@ -80,10 +80,7 @@ public class PersistentIdentifierBag extends AbstractPersistentCollection implem
values = (List<Object>) coll; values = (List<Object>) coll;
} }
else { else {
values = new ArrayList<>(); values = new ArrayList<>( coll );
for ( Object element : coll ) {
values.add( element );
}
} }
setInitialized(); setInitialized();
setDirectlyAccessible( true ); setDirectlyAccessible( true );

View File

@ -211,8 +211,7 @@ public class ExtractedDatabaseMetaDataImpl implements ExtractedDatabaseMetaData
return Collections.emptySet(); return Collections.emptySet();
} }
final Set<String> keywordSet = new HashSet<String>(); final Set<String> keywordSet = new HashSet<String>( Arrays.asList( extraKeywordsString.split( "\\s*,\\s*" ) ) );
keywordSet.addAll( Arrays.asList( extraKeywordsString.split( "\\s*,\\s*" ) ) );
return keywordSet; return keywordSet;
} }

View File

@ -416,8 +416,7 @@ public class QueryPlanCache implements Serializable {
this.filterNames = Collections.emptySet(); this.filterNames = Collections.emptySet();
} }
else { else {
final Set<String> tmp = new HashSet<String>(); final Set<String> tmp = new HashSet<String>( enabledFilters.keySet() );
tmp.addAll( enabledFilters.keySet() );
this.filterNames = Collections.unmodifiableSet( tmp ); this.filterNames = Collections.unmodifiableSet( tmp );
} }

View File

@ -38,8 +38,7 @@ public class NativeSQLQuerySpecification {
this.querySpaces = Collections.EMPTY_SET; this.querySpaces = Collections.EMPTY_SET;
} }
else { else {
Set tmp = new HashSet(); Set tmp = new HashSet( querySpaces );
tmp.addAll( querySpaces );
this.querySpaces = Collections.unmodifiableSet( tmp ); this.querySpaces = Collections.unmodifiableSet( tmp );
} }

View File

@ -40,8 +40,7 @@ public class SQLStateConversionDelegate extends AbstractSQLExceptionConversionDe
private static final Set<String> SQL_GRAMMAR_CATEGORIES = buildGrammarCategories(); private static final Set<String> SQL_GRAMMAR_CATEGORIES = buildGrammarCategories();
private static Set<String> buildGrammarCategories() { private static Set<String> buildGrammarCategories() {
HashSet<String> categories = new HashSet<String>(); HashSet<String> categories = new HashSet<String>(
categories.addAll(
Arrays.asList( Arrays.asList(
"07", // "dynamic SQL error" "07", // "dynamic SQL error"
"20", "20",
@ -57,8 +56,7 @@ public class SQLStateConversionDelegate extends AbstractSQLExceptionConversionDe
private static final Set DATA_CATEGORIES = buildDataCategories(); private static final Set DATA_CATEGORIES = buildDataCategories();
private static Set<String> buildDataCategories() { private static Set<String> buildDataCategories() {
HashSet<String> categories = new HashSet<String>(); HashSet<String> categories = new HashSet<String>(
categories.addAll(
Arrays.asList( Arrays.asList(
"21", // "cardinality violation" "21", // "cardinality violation"
"22" // "data exception" "22" // "data exception"
@ -69,8 +67,7 @@ public class SQLStateConversionDelegate extends AbstractSQLExceptionConversionDe
private static final Set INTEGRITY_VIOLATION_CATEGORIES = buildContraintCategories(); private static final Set INTEGRITY_VIOLATION_CATEGORIES = buildContraintCategories();
private static Set<String> buildContraintCategories() { private static Set<String> buildContraintCategories() {
HashSet<String> categories = new HashSet<String>(); HashSet<String> categories = new HashSet<String>(
categories.addAll(
Arrays.asList( Arrays.asList(
"23", // "integrity constraint violation" "23", // "integrity constraint violation"
"27", // "triggered data change violation" "27", // "triggered data change violation"

View File

@ -440,11 +440,10 @@ public class BoundedConcurrentHashMap<K, V> extends AbstractMap<K, V>
@Override @Override
public Set<HashEntry<K, V>> execute() { public Set<HashEntry<K, V>> execute() {
Set<HashEntry<K, V>> evictedCopy = new HashSet<HashEntry<K, V>>(); Set<HashEntry<K, V>> evictedCopy = new HashSet<HashEntry<K, V>>( evicted );
for ( HashEntry<K, V> e : accessQueue ) { for ( HashEntry<K, V> e : accessQueue ) {
put( e, e.value ); put( e, e.value );
} }
evictedCopy.addAll( evicted );
accessQueue.clear(); accessQueue.clear();
evicted.clear(); evicted.clear();
return evictedCopy; return evictedCopy;
@ -454,8 +453,7 @@ public class BoundedConcurrentHashMap<K, V> extends AbstractMap<K, V>
public Set<HashEntry<K, V>> onEntryMiss(HashEntry<K, V> e) { public Set<HashEntry<K, V>> onEntryMiss(HashEntry<K, V> e) {
put( e, e.value ); put( e, e.value );
if ( !evicted.isEmpty() ) { if ( !evicted.isEmpty() ) {
Set<HashEntry<K, V>> evictedCopy = new HashSet<HashEntry<K, V>>(); Set<HashEntry<K, V>> evictedCopy = new HashSet<HashEntry<K, V>>( evicted );
evictedCopy.addAll( evicted );
evicted.clear(); evicted.clear();
return evictedCopy; return evictedCopy;
} }

View File

@ -64,8 +64,7 @@ public abstract class AbstractEntityJoinWalker extends JoinWalker {
final LockOptions lockOptions, final LockOptions lockOptions,
final AssociationInitCallback callback) throws MappingException { final AssociationInitCallback callback) throws MappingException {
walkEntityTree( persister, getAlias() ); walkEntityTree( persister, getAlias() );
List allAssociations = new ArrayList(); List allAssociations = new ArrayList( associations );
allAssociations.addAll( associations );
allAssociations.add( OuterJoinableAssociation.createRoot( persister.getEntityType(), alias, getFactory() ) ); allAssociations.add( OuterJoinableAssociation.createRoot( persister.getEntityType(), alias, getFactory() ) );
initPersisters( allAssociations, lockOptions, callback ); initPersisters( allAssociations, lockOptions, callback );
initStatementString( whereString, orderByString, lockOptions ); initStatementString( whereString, orderByString, lockOptions );

View File

@ -51,11 +51,10 @@ public class BasicCollectionJoinWalker extends CollectionJoinWalker {
walkCollectionTree(collectionPersister, alias); walkCollectionTree(collectionPersister, alias);
List allAssociations = new ArrayList(); List allAssociations = new ArrayList( associations );
allAssociations.addAll(associations);
allAssociations.add( OuterJoinableAssociation.createRoot( collectionPersister.getCollectionType(), alias, getFactory() ) ); allAssociations.add( OuterJoinableAssociation.createRoot( collectionPersister.getCollectionType(), alias, getFactory() ) );
initPersisters(allAssociations, LockMode.NONE); initPersisters( allAssociations, LockMode.NONE );
initStatementString(alias, batchSize, subquery); initStatementString( alias, batchSize, subquery );
} }
private void initStatementString( private void initStatementString(

View File

@ -58,8 +58,7 @@ public class OneToManyJoinWalker extends CollectionJoinWalker {
walkEntityTree( elementPersister, alias ); walkEntityTree( elementPersister, alias );
List allAssociations = new ArrayList(); List allAssociations = new ArrayList( associations );
allAssociations.addAll( associations );
allAssociations.add( allAssociations.add(
OuterJoinableAssociation.createRoot( OuterJoinableAssociation.createRoot(
oneToManyPersister.getCollectionType(), oneToManyPersister.getCollectionType(),

View File

@ -255,9 +255,7 @@ public class SchemaExport {
Metadata metadata, Metadata metadata,
ServiceRegistry serviceRegistry, ServiceRegistry serviceRegistry,
TargetDescriptor targetDescriptor) { TargetDescriptor targetDescriptor) {
Map config = new HashMap(); Map config = new HashMap( serviceRegistry.getService( ConfigurationService.class ).getSettings() );
config.putAll( serviceRegistry.getService( ConfigurationService.class ).getSettings() );
config.put( AvailableSettings.HBM2DDL_DELIMITER, delimiter ); config.put( AvailableSettings.HBM2DDL_DELIMITER, delimiter );
config.put( AvailableSettings.FORMAT_SQL, format ); config.put( AvailableSettings.FORMAT_SQL, format );
config.put( AvailableSettings.HBM2DDL_IMPORT_FILES, importFiles ); config.put( AvailableSettings.HBM2DDL_IMPORT_FILES, importFiles );

View File

@ -72,8 +72,7 @@ public class SchemaUpdate {
exceptions.clear(); exceptions.clear();
LOG.runningHbm2ddlSchemaUpdate(); LOG.runningHbm2ddlSchemaUpdate();
Map config = new HashMap(); Map config = new HashMap( serviceRegistry.getService( ConfigurationService.class ).getSettings() );
config.putAll( serviceRegistry.getService( ConfigurationService.class ).getSettings() );
config.put( AvailableSettings.HBM2DDL_DELIMITER, delimiter ); config.put( AvailableSettings.HBM2DDL_DELIMITER, delimiter );
config.put( AvailableSettings.FORMAT_SQL, format ); config.put( AvailableSettings.FORMAT_SQL, format );

View File

@ -52,8 +52,7 @@ public class SchemaValidator {
public void validate(Metadata metadata, ServiceRegistry serviceRegistry) { public void validate(Metadata metadata, ServiceRegistry serviceRegistry) {
LOG.runningSchemaValidator(); LOG.runningSchemaValidator();
Map config = new HashMap(); Map config = new HashMap( serviceRegistry.getService( ConfigurationService.class ).getSettings() );
config.putAll( serviceRegistry.getService( ConfigurationService.class ).getSettings() );
final SchemaManagementTool tool = serviceRegistry.getService( SchemaManagementTool.class ); final SchemaManagementTool tool = serviceRegistry.getService( SchemaManagementTool.class );