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 <[email protected]>
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