2015-05-27 127 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文件所在驅動器的連接速度很慢。