浏览 1604 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-24
{ long methodstart = System.currentTimeMillis(); ArrayList<User> list = new ArrayList<User>(); Connection conn = null; ResultSet rs = null; Statement stmt = null; User user= null; String sql = "select * from t_user"; try { long constart = System.currentTimeMillis(); conn = GetDbConnection.GetConnetion(); long conend = System.currentTimeMillis(); System.out.println("Connection time "+(conend-constart)+" ms"); stmt = conn.createStatement(); if (conn != null) { rs = stmt.executeQuery(sql); } long resultstart = System.currentTimeMillis(); while (rs.next()) { user= new User(); user.setUsername(rs.getString(1)); user.setPassword(rs.getString(2)); list.add(user); } stmt.close(); long resultend = System.currentTimeMillis(); System.out.println("getUserInfo ResultSet time "+(resultend-resultstart)+" ms"); }catch (Exception ex) { System.out.println(ex.toString()); } finally { try { if (rs != null) { rs.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { } } long methodend = System.currentTimeMillis(); System.out.println("getUserInfo Time "+(methodend-methodstart)+" ms"); return list; } 以上是我简单的一个测试 主要测试 1.数据库连接时间 2.数据库执行时间 3.整个方法的时间(这种测试方法 我不能确定是否正确) 测试结果(10次左右) (数据库是局域网) Connection time 360 ms (数据连接是用jdbc连接 用jndi测试过数据居然只要0ms,完全不明白为何差距如此大) getUserInfo ResultSet time 16 ms getUserInfo Time 4485 ms 一共返回39条记录 我这样测试了很多次 总觉的时间不合理 我认为 连接时间+执行时间 <= 整个方法的时间 (关闭连接的时间没有测试) 但 360+16 <4485 差距也太大了点 相减的4000ms到底在干什么?(主要不块不是很了解,希望有人帮我解答~!!!) 而且 一个数据操做 往往要调用另一个 数据操作 这将进行两次数据库连接 整个方法的时间更是大大的增长 如果都写个一个数据操作的话代码也太庞大了 (这块又如何解决???) 我这样的测试是不是合理(我也怀疑),如果不合理 告之我合理的方法 jdbc的性能关键在那里?如何才能提高? 以上是我的一些疑问 望了解的人告之 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |