zoukankan      html  css  js  c++  java
  • 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的性能明显优于其它三种.

  • 相关阅读:
    STM32F4 SPI双机通讯调试总结
    Altium Designer (DXP) 复制粘贴,放器件 出错报异常的原因
    C++中一个0xC0000005访问冲突问题
    将Windows 7安装到移动固态硬盘(U盘)
    Delphi 的TStringBuilder防止服务器内存碎片化
    Delphi XE5的Android开发平台搭建
    利用RTTI实现Delphi的多播事件代理研究
    博客即将同步至 OSCHINA 社区
    用太极拳讲分布式理论,真舒服!
    记录一次C#调用Delphi编写Dll程序过程
  • 原文地址:https://www.cnblogs.com/interdrp/p/3439352.html
Copyright © 2011-2022 走看看