工作总结6 JXL Excel性能优化

本文分析了使用JXL库在Tomcat环境中处理Excel时出现的性能问题,发现主要原因是频繁的垃圾回收操作。通过对WorkbookSettings的深入研究,特别是`gcDisabled`参数的调整,关闭手动垃圾回收,显著提高了导出数据的速度。解决方案包括设置系统属性`jxl.nogc`为`true`或在创建Workbook时明确禁用垃圾回收。
摘要由CSDN通过智能技术生成
JXL的性能问题分析

 对于韩国人写得jxl的问题

    最近用jxl做得模板导出数据出现了严重的性能问题:

    (1)在main方法中运行此业务逻辑时间大约1.662秒,打印时间如图:


    虚拟机运行情况如图:


    (2)在Tomcat中运行此业务逻辑时间大约62.182秒,打印时间如图:


    虚拟机运行情况如图:


    (3)分析情况

    通过数据和图表认真分析,main方法之所以运行快,因为JVM里面没有大量的垃圾回收,占用的内存又不是很大,jxl进行垃圾回收时,占用的消耗时间不大。

    在tomcat运行中,可以看到JVM里面程序占用的内存比较大,有垃圾存在,每次进行垃圾回收,都会占用大量的时间。

通过数据分析,main方法的垃圾回收时间很多安基本上忽略不计,而在tomcat里,由于模板总共有47个模板工作表,每个工作表获取数据,要调用3次垃圾回事,每次大约用时0.4秒多,每个工作表用时1.3秒以上,通过计算,大约是60秒以上,可见对整个数据导出占用了大量的时间。

    (4)源码分析

    代码调用处:

                       Workbook wb = Workbook.getWorkbook(file);

                       WritableWorkbook wwb = Workbook.createWorkbook(new File(dstFile),wb);

    此程序相当于打开一个文件的副本,进行修改数据,然后回写到源文件

     产生慢的原因:

     产生一个workbook,读取文件

/**
* A factory method which takes in an excel file and reads in the contents.
*
* @exception IOException
* @exception BiffException
* @param file the excel 97 spreadsheet to parse
* @return a workbook instance
*/
public static Workbook getWorkbook(java.io.File file)
throws IOException, BiffException
{
return getWorkbook(file, new WorkbookSettings());
}

下面这个类的一些参数就是在读取或写入工作簿时用到的(根据一些参数处理)

/**
* This is a bean which client applications may use to set various advanced
* workbook properties. Use of this bean is not mandatory, and its absence
* will merely result in workbooks being read/written using the default
* settings
*/
public final class WorkbookSettings

看一下它的构造器&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值