[#4540] Performance of org.jooq.impl.Fields.field(Field) could be improved heavily, if checking for identity first
This commit is contained in:
parent
6494a7b502
commit
f82ef660e4
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user