POI和jxl.jar性能比较

今天测试了下POI和jxl.jar性能
测试环境:

jxl包:好像是1.4 低于2.0 (忘记了)
poi:poi-3.5-FINAL-20090928.jar
环境:CPU:Pentium(R) 1.4GHZ ,1.5GB内存 MyEclipse5.0  JDK1.5
机器不行,不同电脑上跑出效果不一样,但是仍然可以窥视到POI和jxl效率

Java code
   
   
package com.jarvis.mul; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import jxl.Cell; import jxl.LabelCell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFName; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** * @作者 Jarvis * @创建日期 Dec 2, 2009 * @版本 V 1.0 */ public class PoiredadXLS { String filepath = " E:/5.xls " ; public void readSpeed(){ try { // 创建对Excel工作簿文件的引用 long t1 = System.currentTimeMillis(); FileInputStream rs = new FileInputStream(filepath) ; HSSFWorkbook workbook = new HSSFWorkbook(rs); long t2 = System.currentTimeMillis(); System.out.println( " 加载耗时: " + (t2 - t1)); HashMap map = new HashMap(); int total = workbook.getNumberOfSheets(); // 获取sheet个数 int start = 0 ; int end = 0 ; for ( int i = 0 ; i < total ; i ++ ){ HSSFSheet sheet = workbook.getSheetAt(i); // 按索引获取sheet引用 System.out.println(sheet.getSheetName()); start = sheet.getFirstRowNum(); // sheet起始行索引 end = sheet.getLastRowNum(); // sheet起结束行索引 int temp = 1 ; HSSFRow row = null ; HSSFCell cell1 = null ; HSSFCell cell2 = null ; while (temp < end){ row = sheet.getRow(temp); // 获取第N行表格数据 cell1 = row.getCell( 2 ); // 获取指定列单元格 cell2 = row.getCell( 3 ); // 获取指定列单元格 if (cell1 != null && cell1 != null ){ map.put(cell1.toString(), cell2.toString()) ; } temp ++ ; } } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void readExcel(){ try { HashMap map = new HashMap(); long t1 = System.currentTimeMillis(); FileInputStream is = new FileInputStream(filepath); Workbook rwb = Workbook.getWorkbook(is); // 从输入流创建Workbook long t2 = System.currentTimeMillis(); System.out.println( " 加载耗时: " + (t2 - t1)); String[] sheetname = rwb.getSheetNames(); // 获取所有的sheet名称,返回一个String数组 int sleng = sheetname.length ; for ( int i = 0 ; i < sleng ; i ++ ){ Sheet sheet = rwb.getSheet(sheetname[i]) ; System.out.println(sheetname[i]); int rows = sheet.getRows(); // 获取表格的总行数 int temp = 1 ; Cell cell1 = null ; Cell cell2 = null ; while (temp < rows){ cell1 = sheet.getCell( 2 , temp); // 第一个参数代表列 第二个参数代表行 cell2 = sheet.getCell( 3 , temp); // 第一个参数代表列 第二个参数代表行 if (cell1 != null && cell2 != null ){ map.put(cell1.getContents(), cell2.getContents()) ; } temp ++ ; } } rwb.close(); // 关闭工作薄 流 } catch (BiffException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { PoiredadXLS r = new PoiredadXLS(); long s = System.currentTimeMillis(); r.readSpeed(); r.readExcel(); long e = System.currentTimeMillis(); System.out.println( " 总耗时: " + (e - s)); } }



测试数据和结果如下:

文件              POI加载耗时  POI总耗时    JXL加载耗时  Jxl总耗时   
文件大小57KB          1172 ms    1172 ms      1265 ms      2250 ms
100行数据

文件大小652KB      2297 ms        2313 ms      4406 ms      9750 ms
1000行数据

文件大小2.24M      3109ms        3140ms      16313ms        37453ms
大约6000行数据


机器比较烂,跑出的时间都很长

大家以后用POI吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值