Apache的poi使用WorkbookFactory.create读取Excel文件效率慢问题

WorkbookFactory.create方法可以读取XLS和XLSX文件,而不用担心版本问题。

下面以5M大小xls格式的Excel文件为例:

  1. 使用读取文件方式发现读取速度非常慢,使用Jvisualvm查看发现内存占用小,byte[]大约25兆 WorkbookFactory.create(File)
    此类是org.apache.poi.hssf.record下RecordFactory的createRecords方法
    查看源码发现卡在这个循环中,这里的
  • 查看源码发现卡在这个循环中

在这里插入图片描述

  • 这里使用的是创建文档输入流DocumentInputStream
  • 在这里插入图片描述
  1. 使用读取流方式发现读取速度快,但是内存占用大,大约160M

    WorkbookFactory.create(InputStream)

  2. iputstream依然走的这段代码,但是不会卡

  • 依然走的这段代码,但是不会卡
    查看源码原来创建之前就已经把输入流转换了
  • 查看源码原来创建之前就已经把输入流转换了这里转换的是缓冲流,读取速度更快
  • 这里转换的是缓冲流,读取速度更快
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值