您的位置:首页 > 其它

c3p0、dbcp、proxool、BoneCP比较

2011-12-15 15:57 232 查看
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 {

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的性能明显优于其它三种.

转自:http://blog.sina.com.cn/s/blog_6213b4e50100mb4r.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: