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

  • 相关阅读:
    leetcode:Power of Two
    求二进制中1的个数
    leetcode:Contains Duplicate和Contains Duplicate II
    leetcode:Summary Ranges
    leetcode Database1(三)
    c++作业:使用函数调用的方法,实现求两个整数中大的数的程序。
    Java制作桌面弹球下载版 使用如鹏游戏引擎制作 包含2个精灵球同时弹动
    Java动画 重力弹球 如鹏游戏引擎 精灵 设计一个小球加速落地又减速弹起并反复直到停止的Java程序
    为什么方差的分母有时是n,有时是n-1 源于总体方差和样本方差的不同
    计算机应用第三次作业:自动开机自动关机 常用DOS命令 关于文件文件夹
  • 原文地址:https://www.cnblogs.com/interdrp/p/3439352.html
Copyright © 2011-2022 走看看