Apache POI性能
我遇到Apache POI的性能问题。 我已经阅读了FAQ,它指的是性能测试。 我已经通过注销和4gb堆运行此测试,我无法让测试运行得超过22秒。
这是我正在运行的测试: http : //svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/SSPerformanceTest.java
常见问题解答说,如果我不能让这个测试在3秒内运行,有50,000行和50列“问题在于您的环境”。 我已经阅读了围绕网络的其他评论,指的是禁用poi日志记录并增加堆大小,但似乎没有任何帮助。
我还可以检查什么来修复我的环境?
机器规格(个人台式机):
CPU:Intel i7 8核 内存:16GB 操作系统:Windows 7 64位 JDK:1.8.0_66 POI:3.13 JVM参数:-Xmx4g -Xms4g -Dorg.apache.poi.util.POILogger = org.apache.poi.util.NullLogger 命令参数:XSSF 50000 50 0
我还要提一下,我使用的Apache POIjar子来自maven central
我在github上创建了一个测试项目,您可以在其中简单地克隆项目并运行:
mvn exec:java
我对我正在使用的参数进行了硬编码,因此您无需在命令行中输入任何特殊内容。 文档说这应该在3秒内运行。
测试项目位于: https : //github.com/mikedehaan/poi-test
在我的机器上测试结果:
- HSSF:2秒
- SXSSF:5秒
- XSSF:27秒
机器规格:
CPU:Intel i3-2100,3.10 GHz,4核 内存:16GB 操作系统:Windows 7 64位 JDK:1.7.0_76
我进行了分析,发现由于xmlbeans
和poi-ooxml-schemas
库中的同步方法, XSSF
很慢。 您可以通知poi开发人员并要求检查此案例。
- 读取Excel文档时出现问题(Java代码)
- 如何使用Java获得具有已定义宽度的多行富文本字段(任何字体,任何字体大小)所需的高度?
- 使用IKVM.Net将Apache POI .jar转换为.dll
- 更新Apache POI 4.0后 – 无法识别属性“http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit”
- 如何在apache poi 3.6中创建新行?
- 如何更改文本颜色和填充颜色
- 读取xlsx文件时出现apache POIexception
- 是否可以使用Apache POI解析MS Word并将其转换为XML?
- 使用Apache POI在Excel文件中获取列的名称