职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 640|回复: 14

DBCP,C3P0,Proxool,BoneCP性能比较

  [复制链接]
愚人 发表于 2011-6-20 09:57 | 显示全部楼层 |阅读模式
1 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的性能明显优于其它三种.
ConnectionPool.rar (3.3 MB)
下载次数: 1186

叫我小乖 发表于 2011-6-20 09:57 | 显示全部楼层
那为什么 hibernate 官方推荐使用 c3p0 呢? 我也是在一个博客上看到的说是 官方推荐使用的

fossil 发表于 2011-6-20 09:58 | 显示全部楼层
Songjun37 写道
那为什么 hibernate 官方推荐使用 c3p0 呢? 我也是在一个博客上看到的说是 官方推荐使用的

是的,而且c3p0也被spring推荐,proxool也被hibernate in action推荐,可能是他们对于那些框架兼容性更好吧,但就目前再不添加任何框架的前提下,boneCP是最快的,至于BoneCP为什么会那么多,也是有依据的,他采用了JAVA最新的concurrentHashMap机制,而且连接池可以被动态设置划分为几个区域,每个区域可以独立运行

走失的猫咪 发表于 2011-6-20 09:58 | 显示全部楼层
请教一下楼主,对于Bonecp:
1.有没有类似proxool的监测后台,即用org.logicalcobwebs.proxool.admin.servlet.AdminServlet配置的监测后台

2.自动重连机制如何,即应用服务器和数据库服务器曾经短暂性断开过,proxool能够比较好的自动重连,bonecp应该如何配置呢(曾经尝试过,但貌似会抛错)?

broken 发表于 2011-6-20 09:58 | 显示全部楼层
boneCP确实不错,现在我也在用


走失的猫咪 发表于 2011-6-20 09:58 | 显示全部楼层
BoneCP我也在用

钰云 发表于 2011-6-20 09:58 | 显示全部楼层
没用过BoneCP,但是很质疑这个数据,居然只有1/10

Jethro 发表于 2011-6-20 09:58 | 显示全部楼层
向楼主的探究精神致敬!

broken 发表于 2011-6-20 09:59 | 显示全部楼层
其他数据库是不是也要试试?

话说我当年 发表于 2011-6-20 09:59 | 显示全部楼层
java.util.concurrent包和分区的机制,技术演进的结果。
只学java 发表于 2011-7-20 10:03 | 显示全部楼层
呵呵 没事怎么有点被讽刺的味道啊
fossil 发表于 2011-7-21 11:23 | 显示全部楼层
晕。。。。怎么没早看到呢。。。。。。。。。
只学java 发表于 2011-7-29 10:14 | 显示全部楼层
激动了就不好办了..
月上萧萧 发表于 2011-8-1 10:49 | 显示全部楼层
注:偶是女滴,千真万确,毋庸置疑!
yoyo 发表于 2011-8-5 11:58 | 显示全部楼层
怎么这么跟别人不一样类~
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-28 08:57 , Processed in 0.157778 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表