This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-dbcp.git
The following commit(s) were added to refs/heads/master by this push: new 5e1941c Performance Enhancement: Call toArray with Zero Array Size #20. 5e1941c is described below commit 5e1941ceb35062e749dbc76ec051e71c3b2a7a1a Author: Gary Gregory <gardgreg...@gmail.com> AuthorDate: Wed Jan 13 15:07:58 2021 -0500 Performance Enhancement: Call toArray with Zero Array Size #20. This commit is a better version of PR #20 by DaGeRe. --- src/changes/changes.xml | 3 +++ src/main/java/org/apache/commons/dbcp2/BasicDataSource.java | 6 ++---- src/main/java/org/apache/commons/dbcp2/DelegatingStatement.java | 2 +- .../java/org/apache/commons/dbcp2/PoolableCallableStatement.java | 2 +- .../java/org/apache/commons/dbcp2/PoolablePreparedStatement.java | 2 +- src/main/java/org/apache/commons/dbcp2/PoolingDriver.java | 4 +--- src/main/java/org/apache/commons/dbcp2/Utils.java | 3 +++ 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 035108b..8ae2731 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -95,6 +95,9 @@ The <action> type attribute can be add,update,fix,remove. <action dev="ggregory" type="update" due-to="John Patrick"> Update Hamcrest 1.3 -> 2.2 #70. </action> + <action dev="ggregory" type="update" due-to="Gary Gregory, DaGeRe"> + Performance Enhancement: Call toArray with Zero Array Size #20. + </action> <!-- FIXES --> <action dev="ggregory" type="update" issue="DBCP-569" due-to="Florent Guillaume"> Fix test random failure on TestSynchronizationOrder.testInterposedSynchronization #84. diff --git a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java index 62ca365..32109ee 100644 --- a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java +++ b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java @@ -780,8 +780,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean */ @Override public String[] getConnectionInitSqlsAsArray() { - final Collection<String> result = getConnectionInitSqls(); - return result.toArray(new String[result.size()]); + return getConnectionInitSqls().toArray(Utils.EMPTY_STRING_ARRAY); } protected GenericObjectPool<PoolableConnection> getConnectionPool() { @@ -873,8 +872,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean */ @Override public String[] getDisconnectionSqlCodesAsArray() { - final Collection<String> result = getDisconnectionSqlCodes(); - return result.toArray(new String[result.size()]); + return getDisconnectionSqlCodes().toArray(Utils.EMPTY_STRING_ARRAY); } /** diff --git a/src/main/java/org/apache/commons/dbcp2/DelegatingStatement.java b/src/main/java/org/apache/commons/dbcp2/DelegatingStatement.java index a2976ba..b9f574d 100644 --- a/src/main/java/org/apache/commons/dbcp2/DelegatingStatement.java +++ b/src/main/java/org/apache/commons/dbcp2/DelegatingStatement.java @@ -140,7 +140,7 @@ public class DelegatingStatement extends AbandonedTrace implements Statement { final List<AbandonedTrace> resultSetList = getTrace(); if (resultSetList != null) { final int size = resultSetList.size(); - final ResultSet[] resultSets = resultSetList.toArray(new ResultSet[size]); + final ResultSet[] resultSets = resultSetList.toArray(Utils.EMPTY_RESULT_SET_ARRAY); for (final ResultSet resultSet : resultSets) { if (resultSet != null) { try { diff --git a/src/main/java/org/apache/commons/dbcp2/PoolableCallableStatement.java b/src/main/java/org/apache/commons/dbcp2/PoolableCallableStatement.java index d9e765d..ad52549 100644 --- a/src/main/java/org/apache/commons/dbcp2/PoolableCallableStatement.java +++ b/src/main/java/org/apache/commons/dbcp2/PoolableCallableStatement.java @@ -121,7 +121,7 @@ public class PoolableCallableStatement extends DelegatingCallableStatement { final List<AbandonedTrace> resultSetList = getTrace(); if (resultSetList != null) { final List<Exception> thrownList = new ArrayList<>(); - final ResultSet[] resultSets = resultSetList.toArray(new ResultSet[resultSetList.size()]); + final ResultSet[] resultSets = resultSetList.toArray(Utils.EMPTY_RESULT_SET_ARRAY); for (final ResultSet resultSet : resultSets) { if (resultSet != null) { try { diff --git a/src/main/java/org/apache/commons/dbcp2/PoolablePreparedStatement.java b/src/main/java/org/apache/commons/dbcp2/PoolablePreparedStatement.java index a2f11a3..93a8ef8 100644 --- a/src/main/java/org/apache/commons/dbcp2/PoolablePreparedStatement.java +++ b/src/main/java/org/apache/commons/dbcp2/PoolablePreparedStatement.java @@ -136,7 +136,7 @@ public class PoolablePreparedStatement<K> extends DelegatingPreparedStatement { final List<AbandonedTrace> resultSetList = getTrace(); if (resultSetList != null) { final List<Exception> thrownList = new ArrayList<>(); - final ResultSet[] resultSets = resultSetList.toArray(new ResultSet[resultSetList.size()]); + final ResultSet[] resultSets = resultSetList.toArray(Utils.EMPTY_RESULT_SET_ARRAY); for (final ResultSet resultSet : resultSets) { if (resultSet != null) { try { diff --git a/src/main/java/org/apache/commons/dbcp2/PoolingDriver.java b/src/main/java/org/apache/commons/dbcp2/PoolingDriver.java index 4794301..8e88664 100644 --- a/src/main/java/org/apache/commons/dbcp2/PoolingDriver.java +++ b/src/main/java/org/apache/commons/dbcp2/PoolingDriver.java @@ -25,7 +25,6 @@ import java.sql.SQLFeatureNotSupportedException; import java.util.HashMap; import java.util.NoSuchElementException; import java.util.Properties; -import java.util.Set; import java.util.logging.Logger; import org.apache.commons.pool2.ObjectPool; @@ -134,8 +133,7 @@ public class PoolingDriver implements Driver { * @return the pool names. */ public synchronized String[] getPoolNames() { - final Set<String> names = pools.keySet(); - return names.toArray(new String[names.size()]); + return pools.keySet().toArray(Utils.EMPTY_STRING_ARRAY); } @Override diff --git a/src/main/java/org/apache/commons/dbcp2/Utils.java b/src/main/java/org/apache/commons/dbcp2/Utils.java index e417581..beb880f 100644 --- a/src/main/java/org/apache/commons/dbcp2/Utils.java +++ b/src/main/java/org/apache/commons/dbcp2/Utils.java @@ -58,6 +58,9 @@ public final class Utils { */ public static final Set<String> DISCONNECTION_SQL_CODES; + static final ResultSet[] EMPTY_RESULT_SET_ARRAY = new ResultSet[0]; + static final String[] EMPTY_STRING_ARRAY = new String[0]; + static { DISCONNECTION_SQL_CODES = new HashSet<>(); DISCONNECTION_SQL_CODES.add("57P01"); // Admin shutdown