From 020d33c8aaceba8f4c890b6f377f478e966b8f98 Mon Sep 17 00:00:00 2001 From: Ray Greenwell Date: Mon, 20 Sep 2010 23:21:06 +0000 Subject: [PATCH] Was looking at how some things work and made a few drive-by optimizations to FindAllQuery. - We don't need to destructively modify the Set of keys to fetch if we hold on to one iterator. - We can create an ArrayList that won't need to grow if our keys Iterable happens to be a Collection. - And, just generally prefer Lists factories to specific constructors. --- .../com/samskivert/depot/impl/FindAllKeysQuery.java | 5 +++-- .../com/samskivert/depot/impl/FindAllQuery.java | 13 +++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/samskivert/depot/impl/FindAllKeysQuery.java b/src/main/java/com/samskivert/depot/impl/FindAllKeysQuery.java index ae34965..ce2da88 100644 --- a/src/main/java/com/samskivert/depot/impl/FindAllKeysQuery.java +++ b/src/main/java/com/samskivert/depot/impl/FindAllKeysQuery.java @@ -20,7 +20,6 @@ package com.samskivert.depot.impl; -import java.util.ArrayList; import java.util.List; import java.sql.Connection; @@ -28,6 +27,8 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import com.google.common.collect.Lists; + import com.samskivert.jdbc.DatabaseLiaison; import com.samskivert.depot.DatabaseException; import com.samskivert.depot.Key; @@ -71,7 +72,7 @@ public class FindAllKeysQuery extends Query> invoke (PersistenceContext ctx, Connection conn, DatabaseLiaison liaison) throws SQLException { - List> keys = new ArrayList>(); + List> keys = Lists.newArrayList(); PreparedStatement stmt = _builder.prepare(conn); ResultSet rs = stmt.executeQuery(); while (rs.next()) { diff --git a/src/main/java/com/samskivert/depot/impl/FindAllQuery.java b/src/main/java/com/samskivert/depot/impl/FindAllQuery.java index 4900253..60f1b95 100644 --- a/src/main/java/com/samskivert/depot/impl/FindAllQuery.java +++ b/src/main/java/com/samskivert/depot/impl/FindAllQuery.java @@ -25,7 +25,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -228,7 +228,7 @@ public abstract class FindAllQuery extends Query invoke (PersistenceContext ctx, Connection conn, DatabaseLiaison liaison) throws SQLException { - List result = new ArrayList(); + List result = Lists.newArrayList(); SQLBuilder builder = ctx.getSQLBuilder(DepotTypes.getDepotTypes(ctx, _select)); builder.newQuery(_select); ResultSet rs = builder.prepare(conn).executeQuery(); @@ -288,7 +288,9 @@ public abstract class FindAllQuery extends Query resolve (Iterable> allKeys, Map, T> entities) { - List result = new ArrayList(); + List result = (allKeys instanceof Collection) + ? Lists.newArrayListWithCapacity(((Collection)allKeys).size()) + : Lists.newArrayList(); for (Key key : allKeys) { T value = entities.get(key); if (value != null) { @@ -310,12 +312,11 @@ public abstract class FindAllQuery extends Query In.MAX_KEYS) { int keyCount = fetchKeys.size(); + Iterator> iter = fetchKeys.iterator(); do { Set> keys = Sets.newHashSet(); - Iterator> iter = fetchKeys.iterator(); - for (int ii = 0; ii < Math.min(keyCount, In.MAX_KEYS); ii++) { + for (int ii = 0, nn = Math.min(keyCount, In.MAX_KEYS); ii < nn; ii++) { keys.add(iter.next()); - iter.remove(); } keyCount -= keys.size(); loadRecords(ctx, conn, keys, entities, origStmt);