Skip to content

Commit

Permalink
Presize ArrayLists whose max size is known
Browse files Browse the repository at this point in the history
  • Loading branch information
twilson-palantir committed May 17, 2018
1 parent 2a3a57f commit 5a5bddc
Show file tree
Hide file tree
Showing 34 changed files with 112 additions and 109 deletions.
Expand Up @@ -231,9 +231,10 @@ public final String getFullJavaClassName(Definition definition, Mode mode) {

@Override
public final List<String> getJavaIdentifiers(Collection<? extends Definition> definitions) {
List<String> result = new ArrayList<String>();
List<? extends Definition> nonNull = nonNull(definitions);
List<String> result = new ArrayList<String>(nonNull.size());

for (Definition definition : nonNull(definitions)) {
for (Definition definition : nonNull) {
result.add(getJavaIdentifier(definition));
}

Expand All @@ -247,9 +248,10 @@ public final List<String> getJavaIdentifiers(Definition... definitions) {

@Override
public final List<String> getFullJavaIdentifiers(Collection<? extends Definition> definitions) {
List<String> result = new ArrayList<String>();
List<? extends Definition> nonNull = nonNull(definitions);
List<String> result = new ArrayList<String>(nonNull.size());

for (Definition definition : nonNull(definitions)) {
for (Definition definition : nonNull) {
result.add(getFullJavaIdentifier(definition));
}

Expand Down Expand Up @@ -310,4 +312,4 @@ else if (definition instanceof SchemaDefinition && ((SchemaDefinition) definitio
else
return null;
}
}
}
10 changes: 5 additions & 5 deletions jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java
Expand Up @@ -1403,8 +1403,8 @@ else if (generateRelations() && key != null)
}
}

List<String> arguments = new ArrayList<String>();
List<String> calls = new ArrayList<String>();
List<String> arguments = new ArrayList<String>(degree);
List<String> calls = new ArrayList<String>(degree);
for (int i = 1; i <= degree; i++) {
TypedElementDefinition<?> column = columns.get(i - 1);

Expand Down Expand Up @@ -1459,7 +1459,7 @@ else if (generateRelations() && key != null)
// [#3130] Invalid UDTs may have a degree of 0
// [#3176] Avoid generating constructors for tables with more than 255 columns (Java's method argument limit)
if (degree > 0 && degree < 256) {
List<String> arguments = new ArrayList<String>();
List<String> arguments = new ArrayList<String>(degree);

for (int i = 0; i < degree; i++) {
final TypedElementDefinition<?> column = columns.get(i);
Expand Down Expand Up @@ -2394,7 +2394,7 @@ protected void generateEnum(EnumDefinition e, JavaWriter out) {
final String className = getStrategy().getJavaClassName(e, Mode.ENUM);
final List<String> interfaces = out.ref(getStrategy().getJavaClassImplements(e, Mode.ENUM));
final List<String> literals = e.getLiterals();
final List<String> identifiers = new ArrayList<String>();
final List<String> identifiers = new ArrayList<String>(literals.size());

for (int i = 0; i < literals.size(); i++) {
String identifier = convertToIdentifier(literals.get(i), language);
Expand Down Expand Up @@ -3284,7 +3284,7 @@ protected void generatePojoDefaultConstructor(Definition tableOrUDT, JavaWriter
// [#3010] Invalid UDTs may have no attributes. Avoid generating this constructor in that case
int size = getTypedElements(tableOrUDT).size();
if (size > 0) {
List<String> nulls = new ArrayList<String>();
List<String> nulls = new ArrayList<String>(size);
for (TypedElementDefinition<?> column : getTypedElements(tableOrUDT))

// Avoid ambiguities between a single-T-value constructor
Expand Down
Expand Up @@ -202,7 +202,7 @@ protected String beforeClose(String string) {

@Override
protected List<String> ref(List<String> clazz, int keepSegments) {
List<String> result = new ArrayList<String>();
List<String> result = new ArrayList<String>(clazz == null ? 0 : clazz.size());

if (clazz != null) {
for (String c : clazz) {
Expand Down
Expand Up @@ -182,9 +182,10 @@ private final List<MatchersEnumType> enums(Definition definition) {
}

private final List<String> split(String result) {
List<String> list = new ArrayList<String>();
String[] split = result.split(",");
List<String> list = new ArrayList<String>(split.length);

for (String string : result.split(","))
for (String string : split)
list.add(string.trim());

return list;
Expand Down
Expand Up @@ -169,7 +169,7 @@ private final Properties properties() {
}

private final List<String> entityClassNames() {
List<String> result = new ArrayList<String>();
List<String> result = new ArrayList<String>(classes.size());

for (Class<?> klass : classes)
result.add(klass.getName());
Expand Down
Expand Up @@ -1335,7 +1335,7 @@ public final List<EnumDefinition> getEnums(SchemaDefinition schema) {
}

private final List<EnumDefinition> getConfiguredEnums() {
List<EnumDefinition> result = new ArrayList<EnumDefinition>();
List<EnumDefinition> result = new ArrayList<EnumDefinition>(configuredCustomTypes.size());

for (EnumType enumType : configuredEnumTypes) {
String name = enumType.getName();
Expand Down
4 changes: 2 additions & 2 deletions jOOQ/src/main/java/org/jooq/impl/AbstractCursor.java
Expand Up @@ -181,7 +181,7 @@ public final void format(Writer writer, TXTFormat format) {

for (int index = 0; index < fields.fields.length; index++) {
if (Number.class.isAssignableFrom(fields.fields[index].getType())) {
List<Integer> decimalPlacesList = new ArrayList<Integer>();
List<Integer> decimalPlacesList = new ArrayList<Integer>(1 + buffer.size());

// Initialize
decimalPlacesList.add(0);
Expand All @@ -205,7 +205,7 @@ public final void format(Writer writer, TXTFormat format) {
colMaxWidth = isNumCol ? NUM_COL_MAX_WIDTH : format.maxColWidth();

// Collect all widths for the column
List<Integer> widthList = new ArrayList<Integer>();
List<Integer> widthList = new ArrayList<Integer>(1 + buffer.size());

// Add column name width first
widthList.add(min(colMaxWidth, max(format.minColWidth(), fields.fields[index].getName().length())));
Expand Down
2 changes: 1 addition & 1 deletion jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java
Expand Up @@ -573,7 +573,7 @@ protected final void prepare(ExecuteContext ctx) throws SQLException {

case HSQLDB:
default: {
List<String> names = new ArrayList<String>();
List<String> names = new ArrayList<String>(returningResolvedAsterisks.size());
RenderNameStyle style = configuration().settings().getRenderNameStyle();

for (Field<?> field : returningResolvedAsterisks) {
Expand Down
4 changes: 2 additions & 2 deletions jOOQ/src/main/java/org/jooq/impl/AbstractField.java
Expand Up @@ -947,7 +947,7 @@ public final Condition in(Field<?>... values) {

@Override
public final Condition in(Collection<?> values) {
List<Field<?>> fields = new ArrayList<Field<?>>();
List<Field<?>> fields = new ArrayList<Field<?>>(values.size());

for (Object value : values)
fields.add(Tools.field(value, this));
Expand Down Expand Up @@ -987,7 +987,7 @@ public final Condition notIn(Field<?>... values) {

@Override
public final Condition notIn(Collection<?> values) {
List<Field<?>> fields = new ArrayList<Field<?>>();
List<Field<?>> fields = new ArrayList<Field<?>>(values.size());

for (Object value : values)
fields.add(Tools.field(value, this));
Expand Down
4 changes: 2 additions & 2 deletions jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java
Expand Up @@ -426,7 +426,7 @@ private final int executeSelectFromHSQLDB() {
private final int executeSelectFromPOSTGRES() {
DSLContext create = create(configuration);

List<Field<?>> fields = new ArrayList<Field<?>>();
List<Field<?>> fields = new ArrayList<Field<?>>(1 + outParameters.size());
if (returnParameter != null)
fields.add(DSL.field(DSL.name(getName()), returnParameter.getDataType()));
for (Parameter<?> p : outParameters)
Expand Down Expand Up @@ -1606,7 +1606,7 @@ public void accept(Context<?> ctx) {
RenderContext local = create(ctx).renderContext();
toSQLQualifiedName(local);

List<Field<?>> fields = new ArrayList<Field<?>>();
List<Field<?>> fields = new ArrayList<Field<?>>(getInParameters().size());
for (Parameter<?> parameter : getInParameters()) {

// [#1183] [#3533] Skip defaulted parameters
Expand Down
4 changes: 2 additions & 2 deletions jOOQ/src/main/java/org/jooq/impl/BatchSingle.java
Expand Up @@ -200,7 +200,7 @@ private final int[] executePrepared() {
// [#4062] Make sure we collect also repeated named parameters
ParamCollector collector = new ParamCollector(configuration, false);
collector.visit(query);
List<Param<?>> params = new ArrayList<Param<?>>();
List<Param<?>> params = new ArrayList<Param<?>>(collector.resultList.size());
for (Entry<String, Param<?>> entry : collector.resultList)
params.add(entry.getValue());

Expand Down Expand Up @@ -263,7 +263,7 @@ private final int[] executePrepared() {
}

private final int[] executeStatic() {
List<Query> queries = new ArrayList<Query>();
List<Query> queries = new ArrayList<Query>(allBindValues.size());

for (Object[] bindValues : allBindValues) {
for (int i = 0; i < bindValues.length; i++) {
Expand Down
2 changes: 1 addition & 1 deletion jOOQ/src/main/java/org/jooq/impl/DAOImpl.java
Expand Up @@ -399,7 +399,7 @@ record = using(configuration)
}

private /* non-final */ List<R> records(Collection<P> objects, boolean forUpdate) {
List<R> result = new ArrayList<R>();
List<R> result = new ArrayList<R>(objects.size());
Field<?>[] pk = pk();

for (P object : objects) {
Expand Down
6 changes: 3 additions & 3 deletions jOOQ/src/main/java/org/jooq/impl/DDL.java
Expand Up @@ -86,9 +86,9 @@ private final Query createTable(Table<?> table) {
}

private final List<Query> alterTableAddConstraints(Table<?> table) {
List<Query> result = new ArrayList<Query>();

for (Constraint constraint : constraints(table))
List<Constraint> constraints = constraints(table);
List<Query> result = new ArrayList<Query>(constraints.size());
for (Constraint constraint : constraints)
result.add(ctx.alterTable(table).add(constraint));

return result;
Expand Down
2 changes: 1 addition & 1 deletion jOOQ/src/main/java/org/jooq/impl/DSL.java
Expand Up @@ -20642,7 +20642,7 @@ public static RowN row(Field<?>... values) {
*/
@Support
public static RowN row(Collection<?> values) {
Collection<Field<?>> fields = new ArrayList<Field<?>>();
Collection<Field<?>> fields = new ArrayList<Field<?>>(values.size());

for (Object o : values)
fields.add(o instanceof Field<?> ? (Field<?>) o : val(o));
Expand Down
6 changes: 3 additions & 3 deletions jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java
Expand Up @@ -704,10 +704,10 @@ public String renderInlined(QueryPart part) {

@Override
public List<Object> extractBindValues(QueryPart part) {
List<Object> result = new ArrayList<Object>();

ParamCollector collector = new ParamCollector(configuration(), false);
collector.visit(part);

List<Object> result = new ArrayList<Object>(collector.resultList.size());
for (Entry<String, Param<?>> entry : collector.resultList)
result.add(entry.getValue().getValue());

Expand Down Expand Up @@ -1459,7 +1459,7 @@ public Result<Record> fetchFromStringData(List<String[]> strings, boolean header
return new ResultImpl<Record>(configuration());
}
else {
List<Field<?>> fields = new ArrayList<Field<?>>();
List<Field<?>> fields = new ArrayList<Field<?>>(strings.get(0).length);
int firstRow;

if (header) {
Expand Down
2 changes: 1 addition & 1 deletion jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java
Expand Up @@ -391,7 +391,7 @@ public int compare(Constructor<E> c1, Constructor<E> c2) {
Class<?> klassType = Tools.ktKClass().type();
Method getJavaClass = jvmClassMappingKt.type().getMethod("getJavaClass", klassType);

List<String> parameterNames = new ArrayList<String>();
List<String> parameterNames = new ArrayList<String>(parameters.size());
Class<?>[] parameterTypes = new Class[parameters.size()];

for (int i = 0; i < parameterTypes.length; i++) {
Expand Down
2 changes: 1 addition & 1 deletion jOOQ/src/main/java/org/jooq/impl/DivideBy.java
Expand Up @@ -95,7 +95,7 @@ final class DivideBy
*/
private final Table<Record> table() {
ConditionProviderImpl selfJoin = new ConditionProviderImpl();
List<Field<?>> select = new ArrayList<Field<?>>();
List<Field<?>> select = new ArrayList<Field<?>>(returning.size());
Table<?> outer = dividend.as("dividend");

for (Field<?> field : returning) {
Expand Down
2 changes: 1 addition & 1 deletion jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java
Expand Up @@ -186,7 +186,7 @@ final Select<Record> insertSelect() {
Select<Record> select = null;

for (int row = 0; row < rows; row++) {
List<Field<?>> fields = new ArrayList<Field<?>>();
List<Field<?>> fields = new ArrayList<Field<?>>(values.size());

for (List<Field<?>> list : values.values())
fields.add(list.get(row));
Expand Down
2 changes: 1 addition & 1 deletion jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java
Expand Up @@ -646,7 +646,7 @@ else if (TRUE.equals(Tools.settings(configuration).isEmulateOnDuplicateKeyUpdate

// [#6462] MySQL ON DUPLICATGE KEY UPDATE clause
// All conflicting keys are considered
List<List<? extends Field<?>>> result = new ArrayList<List<? extends Field<?>>>();
List<List<? extends Field<?>>> result = new ArrayList<List<? extends Field<?>>>(table.getKeys().size());
for (UniqueKey<R> key : table.getKeys())
result.add(key.getFields());

Expand Down
6 changes: 3 additions & 3 deletions jOOQ/src/main/java/org/jooq/impl/JSONReader.java
Expand Up @@ -101,9 +101,9 @@ public final void close() throws IOException {
}

private final void readRecords(LinkedHashMap<String, LinkedList<?>> jsonRoot) {
records = new ArrayList<String[]>();

for (Object record : jsonRoot.get("records")) {
LinkedList<?> rootRecords = jsonRoot.get("records");
records = new ArrayList<String[]>(rootRecords.size());
for (Object record : rootRecords) {
String[] v = new String[fieldNames.length];
int i = 0;

Expand Down
10 changes: 5 additions & 5 deletions jOOQ/src/main/java/org/jooq/impl/JoinTable.java
Expand Up @@ -185,11 +185,11 @@ final class JoinTable extends AbstractTable<Record>
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public final List<ForeignKey<Record, ?>> getReferences() {
List<ForeignKey<?, ?>> result = new ArrayList<ForeignKey<?, ?>>();

result.addAll(lhs.getReferences());
result.addAll(rhs.getReferences());

List<? extends ForeignKey<?, ?>> lhsReferences = lhs.getReferences();
List<? extends ForeignKey<?, ?>> rhsReferences = rhs.getReferences();
List<ForeignKey<?, ?>> result = new ArrayList<ForeignKey<?, ?>>(lhsReferences.size() + rhsReferences.size());
result.addAll(lhsReferences);
result.addAll(rhsReferences);
return (List) result;
}

Expand Down
5 changes: 3 additions & 2 deletions jOOQ/src/main/java/org/jooq/impl/MergeImpl.java
Expand Up @@ -55,6 +55,7 @@
import static org.jooq.impl.DSL.insertInto;
import static org.jooq.impl.DSL.notExists;
import static org.jooq.impl.DSL.nullSafe;
import static org.jooq.impl.DSL.row;
import static org.jooq.impl.Keywords.K_AND;
import static org.jooq.impl.Keywords.K_AS;
import static org.jooq.impl.Keywords.K_DELETE_WHERE;
Expand Down Expand Up @@ -1209,8 +1210,8 @@ private final QueryPart getStandardMerge() {
// ------------------------------
Table<?> src;
if (upsertSelect != null) {
List<Field<?>> v = new ArrayList<Field<?>>();
Row row = upsertSelect.fieldsRow();
List<Field<?>> v = new ArrayList<Field<?>>(row.size());

for (int i = 0; i < row.size(); i++) {
v.add(row.field(i).as("s" + (i + 1)));
Expand All @@ -1221,7 +1222,7 @@ private final QueryPart getStandardMerge() {
src = DSL.select(v).from(upsertSelect).asTable("src");
}
else {
List<Field<?>> v = new ArrayList<Field<?>>();
List<Field<?>> v = new ArrayList<Field<?>>(getUpsertValues().size());

for (int i = 0; i < getUpsertValues().size(); i++) {
v.add(getUpsertValues().get(i).as("s" + (i + 1)));
Expand Down
6 changes: 3 additions & 3 deletions jOOQ/src/main/java/org/jooq/impl/MetaImpl.java
Expand Up @@ -382,7 +382,7 @@ public Result<Record> run(DatabaseMetaData meta) throws SQLException {
}
});

List<Table<?>> result = new ArrayList<Table<?>>();
List<Table<?>> result = new ArrayList<Table<?>>(tables.size());
for (Record table : tables) {
String catalog = table.get(0, String.class);
String schema = table.get(1, String.class);
Expand Down Expand Up @@ -581,7 +581,6 @@ public Result<Record> run(DatabaseMetaData meta) throws SQLException {
@Override
@SuppressWarnings("unchecked")
public List<ForeignKey<Record, ?>> getReferences() {
List<ForeignKey<Record, ?>> references = new ArrayList<ForeignKey<Record, ?>>();
Result<Record> result = meta(new MetaFunction() {
@Override
public Result<Record> run(DatabaseMetaData meta) throws SQLException {
Expand Down Expand Up @@ -620,6 +619,7 @@ public Result<Record> run(DatabaseMetaData meta) throws SQLException {
for (Schema schema : getSchemas())
schemas.put(schema.getName(), schema);

List<ForeignKey<Record, ?>> references = new ArrayList<ForeignKey<Record, ?>>(groups.size());
for (Entry<Record, Result<Record>> entry : groups.entrySet()) {
Schema schema = schemas.get(entry.getKey().get(1));

Expand Down Expand Up @@ -846,7 +846,6 @@ public final boolean isPrimary() {
@Override
@SuppressWarnings("unchecked")
public final List<ForeignKey<?, Record>> getReferences() {
List<ForeignKey<?, Record>> references = new ArrayList<ForeignKey<?, Record>>();
Result<Record> result = meta(new MetaFunction() {
@Override
public Result<Record> run(DatabaseMetaData meta) throws SQLException {
Expand Down Expand Up @@ -885,6 +884,7 @@ public Result<Record> run(DatabaseMetaData meta) throws SQLException {
for (Schema schema : getSchemas())
schemas.put(schema.getName(), schema);

List<ForeignKey<?, Record>> references = new ArrayList<ForeignKey<?, Record>>(groups.size());
for (Entry<Record, Result<Record>> entry : groups.entrySet()) {
Schema schema = schemas.get(entry.getKey().get(1));

Expand Down
4 changes: 2 additions & 2 deletions jOOQ/src/main/java/org/jooq/impl/ReferenceImpl.java
Expand Up @@ -169,7 +169,7 @@ private static <R1 extends Record, R2 extends Record> Result<R1> fetch(
* Extract a list of values from a set of records given some fields
*/
private static <R extends Record> List<Object> extractValues(Collection<? extends R> records, TableField<R, ?> field2) {
List<Object> result = new ArrayList<Object>();
List<Object> result = new ArrayList<Object>(records.size());

for (R record : records)
result.add(record.get(field2));
Expand All @@ -181,7 +181,7 @@ private static <R extends Record> List<Object> extractValues(Collection<? extend
* Extract a list of row value expressions from a set of records given some fields
*/
private static <R extends Record> List<RowN> extractRows(Collection<? extends R> records, TableField<R, ?>[] fields) {
List<RowN> rows = new ArrayList<RowN>();
List<RowN> rows = new ArrayList<RowN>(records.size());

for (R record : records) {
Object[] values = new Object[fields.length];
Expand Down

0 comments on commit 5a5bddc

Please sign in to comment.