Apache Poi Performance问题打开打包在jar

时间:2016-05-24 01:19:55

标签: java performance apache-poi

我正在尝试使用Apache Poi 3.14打开一个非常小的电子表格。 电子表格是XLSX,有4个工作表,只包含带边框的阴影列标题(15kB)

我正在使用以下内容访问位于我的java项目中的文件夹中的电子表格(导​​出时在jar中打包)。

     OPCPackage p = OPCPackage.open(getClass().getResourceAsStream(EXPORT_TEMPLATE));
     XSSFWorkbook wb =  new XSSFWorkbook(p);

当我直接从Eclipse IDE运行时,工作簿几乎立即打开,但是当我导出应用程序并运行jar时,打开工作簿需要15秒。

在我添加代码以从头开始创建工作表之前,我正试图弄清楚如何改善这种性能。

2 个答案:

答案 0 :(得分:1)

企业反恶意软件应用程序正在影响工作簿创建过程!

答案 1 :(得分:1)

听起来IDE和您的应用程序中有不同的Classloader实现,而Eclipse之外的随机访问速度很慢。

我会通过将资源完全从jar文件中提取到byte []中来测试这个,例如通过Commons-IO然后才构建它:

byte[] bytes = IOUtils.toByteArray(getClass().getResourceAsStream(EXPORT_TEMPLATE))
XSSFWorkbook wb =  new XSSFWorkbook(new ByteArrayInputStream(bytes));