`
g21121
  • 浏览: 685818 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Proxool性能测试

 
阅读更多

        前面已经做了c3p0和Druid的测试,下面进行Proxool的测试,其实我比较看好Proxool。

 

        1.修改代码:

/**
     * Proxool实现
     * @throws ProxoolException
     */
    public void getUsrInfoWithProxool(ProxoolDataSource pds,Integer usrId) {
        String sql = "SELECT * FROM USER u WHERE u.USR_ID=" + usrId;

        try {
            // 获取连接
            conn = pds.getConnection();
            Statement st = conn.createStatement();
            ResultSet result = st.executeQuery(sql);
            result.close();
            st.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } 
    }

 

 

        2.修改main函数,还是进行10次查询,100次查询,1000次查询,每种查询重复100次的测试。

package com.test.jdbc.main;

import java.io.IOException;
import org.logicalcobwebs.proxool.ProxoolDataSource;
import com.test.jdbc.dao.TestDAO;
import com.test.jdbc.dao.impl.TestDAOImpl;

public class Main3 {

    static String driver = "com.mysql.jdbc.Driver";

    static String jdbcUrl = "jdbc:mysql://192.168.0.1:3306/test";

    static String user = "dba";

    static String passwd = "dba";

    public static void main(String[] args) throws IOException {
        TestDAO testDAO = new TestDAOImpl();
        ProxoolDataSource pds = getProxoolDataSource();
        // 运行100次
        for (int i = 0; i < 100; i++) {
            queryProxool(testDAO, pds, 100);
        }
    }

    /**
     * 获取Proxool数据源
     * @return
     */
    public static ProxoolDataSource getProxoolDataSource() {
        ProxoolDataSource pds = new ProxoolDataSource();
        pds.setAlias("mysql");
        pds.setUser(user);
        pds.setPassword(passwd);
        pds.setDriverUrl(jdbcUrl);
        pds.setDriver(driver);
        return pds;
    }

    public static void queryProxool(TestDAO testDAO, ProxoolDataSource pds,
        int count) {
        Integer usrId = 9900;
        long startMillis = System.currentTimeMillis();
        // 测试c3p0查询
        for (int i = 0; i < count; i++) {
            testDAO.getUsrInfoWithProxool(pds, usrId);
        }
        long endMillis = System.currentTimeMillis();
        System.out.println(endMillis - startMillis);
    }

}

 

 

        将运行结果复制到excel表格中,利用excel的图表功能生成几种测试的耗时波动图表(单位:毫秒):
      
        1.查询10次数据库,重复100次结果:


 
        2.查询100次数据库,重复100次结果:


 
        3.查询1000次数据库,重复100次结果:

 

       

        平均值:
        10次查询:32毫秒
        100次查询:314毫秒
        1000次查询: 2879毫秒

        从平均值可以很明显的看出Proxool的性能非常优秀,远超其他两种连接池,这里的性能比较结果为Proxool>Druid>=c3p0。Druid未能表现出官方所说的优秀性能,此次几种测试方法具有很大的局限性,配置也均采用各连接池的默认属性,大家可以根据情况自行配置优化。

        下一篇文章将对Proxool,Druid,c3p0,tomcat jdbc pool进行更详尽细致的对比测试。

2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics