[#4540] Performance of org.jooq.impl.Fields.field(Field) could be improved heavily, if checking for identity first

This commit is contained in:
lukaseder 2015-09-13 21:00:02 +02:00
parent 6494a7b502
commit f82ef660e4

View File

@ -82,16 +82,18 @@ class Fields<R extends Record> extends AbstractQueryPart implements RecordType<R
@Override
@SuppressWarnings("unchecked")
public final <T> Field<T> field(Field<T> field) {
if (field == null) {
if (field == null)
return null;
}
// [#4540] Try finding a match by identity
for (Field<?> f : fields)
if (f == field)
return (Field<T>) f;
// [#1802] Try finding an exact match (e.g. exact matching qualified name)
for (Field<?> f : fields) {
if (f.equals(field)) {
for (Field<?> f : fields)
if (f.equals(field))
return (Field<T>) f;
}
}
// [#4283] table / column matches are better than only column matches
Field<?> columnMatch = null;
@ -249,10 +251,14 @@ class Fields<R extends Record> extends AbstractQueryPart implements RecordType<R
if (compareWith != null) {
int size = fields.length;
for (int i = 0; i < size; i++) {
// [#4540] Match by identity first
for (int i = 0; i < size; i++)
if (fields[i] == compareWith)
return i;
for (int i = 0; i < size; i++)
if (fields[i].equals(compareWith))
return i;
}
}
return -1;