From 5031910d2a64eeb72d0dcde65dca6c6772a38dc5 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Wed, 14 Jan 2015 16:23:09 +0100 Subject: [PATCH] [#3947] Avoid creating unnecessary Iterators and ArrayLists in AbstractStore.getAttachables() --- jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java | 8 ++++++-- jOOQ/src/main/java/org/jooq/impl/AbstractStore.java | 7 ++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java index 6912b822a5..78b75dd60e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java @@ -59,6 +59,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.BitSet; import java.util.Collection; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -143,16 +144,19 @@ abstract class AbstractRecord extends AbstractStore implements Record { @Override final List getAttachables() { - List result = new ArrayList(); + List result = null; int size = size(); for (int i = 0; i < size; i++) { if (values[i] instanceof Attachable) { + if (result == null) + result = new ArrayList(); + result.add((Attachable) values[i]); } } - return result; + return result == null ? Collections.emptyList() : result; } // ------------------------------------------------------------------------ diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractStore.java b/jOOQ/src/main/java/org/jooq/impl/AbstractStore.java index 16033fcf75..5a0c15fafb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractStore.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractStore.java @@ -85,9 +85,10 @@ abstract class AbstractStore implements AttachableInternal { public final void attach(Configuration c) { configuration = c; - for (Attachable attachable : getAttachables()) { - attachable.attach(c); - } + final List attachables = getAttachables(); + final int size = attachables.size(); + for (int i = 0; i < size; i++) + attachables.get(i).attach(c); } @Override