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