2015-05-27 128 views
-1

我在网上看到很多关于Apache POI性能的问题,但没有一个像我的情况那么慢,他们的解决方案都不适合我。我使用的是NetBeans 8.0.2,JDK 1.8和POI-3.12-20150511。要读取300 KB XLS(3000行和一些列),这条线需要10秒来运行:Apache POI非常慢

FileInputStream file = new FileInputStream(filename); 
HSSFWorkbook workbook = new HSSFWorkbook(file); //this line takes 10 seconds 

读取一个较大的一个像1 MB XLS,它可能需要一个以上的分钟创建HSSFWorkbook。

我试图禁用POI日志,并通过添加这些参数增加JVM存储器:

-Dorg.apache.poi.util.POILogger = org.apache.commons.logging.impl.NoOpLog -J-Xmx1024m

他们没有帮助。我的机器有12 GB内存,所以内存不应该成为问题。

我不知道是否是Apache POI或JVM的问题。但是我已经将3000行数据导入MySQL,并且需要2秒钟才能从MySQL读取数据(而Excel需要10秒钟)。

+0

使用适当的基准测试工具对您的代码进行基准测试。从外观上看,您可以通过使用[BufferedStream](https://docs.oracle.com/javase/tutorial/essential/io/buffers.html)来降低读取的IO开销 – Vogel612

回答

0

原来是网络问题。到excel文件所在驱动器的连接速度很慢。