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

  • 相关阅读:
    常见正则总结
    word 操作教程
    word调整技巧
    关于如何自定义handler
    html 处理
    iis 导入和导出配置——iis管理
    前端学习
    动态添加js的方法
    jquery学习笔记
    php学习笔记
  • 原文地址:https://www.cnblogs.com/interdrp/p/3439352.html
Copyright © 2020-2023  润新知