c3p0、dbcp、proxool、BoneCP比较

1.1 测试环境:

操作系统:windows xp sp3
数据库mysql 5.1

1.2 测试条件:

initialSize=30;
maxSize=200;
minSize=30;
其余参数为默认值;

1.3 测试代码:

利用JAVA代码模拟多线程对这三种数据库连接池进行测试,通过花费的时间判断效率
DBTest.java:
public class DBTest implements Runnable /*extends Thread*/ {
public long date1=0;
private static Proxool proxool;
public static int count = 0;
public static void main(String[] args) throws Exception {
//DBCP.init();
//C3P0.init();
//proxool = Proxool.getInstance();
BoneCPConn.init();
DBTest test = new DBTest();
test.startup();
}

public void startup() {
for (int i = 0; i <5; i++) {
Thread thread = new Thread(this);
thread.start();
}
}

public void run() {
if(date1==0)
{
date1 = System.currentTimeMillis();
System.out.println(date1);
}
for(int i=0 ; i<10 ; i++){
try {
//Connection conn = DBCP.getConnection();
// Connection conn = C3P0.getConnection();
//Connection conn =proxool.getConnection();
Connection conn = BoneCPConn.getConnection();
if (conn != null) {
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from user where id=1");
while (rs.next()) {
String username = rs.getString(2);
System.out.println(username);
}
rs.close();
statement.close();
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
count++;
if(count==5)
{
long date2 = System.currentTimeMillis();
System.out.println(date2);
System.out.println("
运行完毕!耗时为:
" + (date2 - date1) + "ms");
}
}
}
4.3.1
模拟5个线程循环10次并发访问数据库

DBCP
用时
1181ms
C3P0
用时
860ms
Proxool
用时
1563ms
BoneCP
用时
31ms
4.3.2
模拟10个线程循环10次并发访问数据库

DBCP
用时
1188ms
C3P0
用时
953ms
Proxool
用时
1625ms
BoneCP
用时
63ms
4.3.3
模拟20个线程循环10次并发访问数据库

DBCP
用时
1204ms
C3P0
用时
1000ms
Proxool
用时
1640ms
BoneCP
用时
110ms
4.3.4
模拟30个线程循环10次并发访问数据库

DBCP
用时
1250ms
C3P0
用时
1047ms
Proxool
用时
1657ms
BoneCP
用时
156ms
4.3.5
模拟50个线程循环10次并发访问数据库

DBCP
用时
1406ms
C3P0
用时
1343ms
Proxool
用时
1843ms
BoneCP
用时
172ms
4.3.6
模拟100个线程循环10次并发访问数据库

DBCP
用时
1641ms
C3P0
用时
2703ms
Proxool
用时
2031ms
BoneCP
用时
532ms
4.3.7
模拟200个线程循环10次并发访问数据库

DBCP
用时
2093ms
C3P0
用时
4891ms
Proxool
用时
2406ms
BoneCP
用时
936ms
4.3.8
模拟500个线程循环10次并发访问数据库

DBCP
用时
3219ms
C3P0
用时
11703ms
Proxool
用时
3343ms
BoneCP
用时
1922ms
4.3.9
模拟800个线程循环10次并发访问数据库

DBCP
用时
4688ms
C3P0
用时
12063ms
Proxool
用时
4141ms
BoneCP
用时
2859ms
4.3.10
模拟1000个线程循环10次并发访问数据库

DBCP
用时
5187ms
C3P0
用时
12563ms
Proxool
用时
4703ms
BoneCP
用时
3610ms
4.3.11
模拟3000个线程循环10次并发访问数据库

DBCP
用时
14094ms
C3P0
用时
16297ms
Proxool
用时
11344ms
BoneCP
用时
11391ms
4.3.12
模拟5000个线程循环10次并发访问数据库

DBCP
用时
23610ms
C3P0
用时
22032ms
Proxool
用时
20125ms
BoneCP
用时
17125ms

4.4测试结果分析:

         BoneCP一直保持性能最佳

4.5 测试结论

          通过对四种数据库连接池的性能测试发现,BoneCP的性能明显优于其它三种.

 

你可能感兴趣的:(proxool)