当前位置: 首页 > 面试题库 >

Apache POI性能

梁兴文
2023-03-14
问题内容

我在使用Apache POI时遇到性能问题。我已经阅读了有关性能测试的FAQ。我已经通过注销和4gb的堆运行了该测试,但我无法使测试的运行速度超过22秒。

这是我正在运行的测试:http
:
//svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/SSPerformanceTest.java

该FAQ说,如果我不能得到这个测试在50,000行和50列说:“问题是你的环境”下运行3秒。我已经在网上阅读了其他一些评论,这些评论都涉及禁用poi日志记录和增加堆大小,但是似乎没有任何帮助。

我还能检查什么来修复我的环境?

机器规格(个人台式机):

CPU:Intel i7 8核
内存:16GB
操作系统:Windows 7 64bit
JDK:1.8.0_66
兴趣点:3.13
JVM参数:-Xmx4g -Xms4g -Dorg.apache.poi.util.POILogger = org.apache.poi.util.NullLogger
命令参数:XSSF 50000 50 0

我还应该提到我正在使用的Apache POI罐来自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 64bit
JDK:1.7.0_76

我进行了性能分析,发现XSSF由于xmlbeanspoi-ooxml- schemas库中的方法同步,所以速度很慢。您可以通知poi开发人员,并要求检查此情况。



 类似资料:
  • 我有点迷失了 我试过3.17、4.0.0和5.0.0版。 或 我无法获得没有弃用或类型错误的代码:-( 我将Eclipe与Maven和Java11一起使用。在版本发布之后,我做了“更新项目”来更新Maven。

  • 在xlsx工作簿中,有些单元格具有一些无界的SUMIF公式,如下所示:。使用ApachePOI5.0.0对一个SUMIF函数的评估持续100ms,对给定工作簿的评估持续几分钟。 提高执行持续时间的一种方法是将公式绑定到如下内容:。在我的情况下,这不是一个解决方案,因为我不是xlsx文件的作者,系统从未知的人那里获取未知的xlsx文件(因此我不能仅仅告诉他们限制SUMIF范围)。 的当前实现迭代给定

  • 在执行此代码时,它在线程"main"java.lang.NoClassDefFoundError: org/apache/Commons/math3/util/ArithmeticUtils在org.apache.poi.poifs.property.RootProperty.set大小(RootProperty.java:59)在org.apache.poi.poifs.property.Dir

  • 我正在尝试用ApachePOI创建甜甜圈图,但没有任何信息或示例。我尝试使用饼图的例子,但没有成功。你能帮我解决这个问题吗?

  • 我对POI还是新手,但是我想简单地在Excel工作簿中迭代一列。例如,在下表中,如果我只想要列A的值,即列0中的行0-3,有没有有效的方法来做到这一点?我所看到的所有POI都是基于行的。 我有一些大的电子表格,我可以成功地遍历整个表格,但我只是想找出处理这种事情的最佳实践。 提前感谢。

  • 我已经编写了用于编写xlsm(Excel2007)的java文件。 使用ApachePOI库,编写xlsx文件是成功的。编写xlsm文件是成功的。但我无法打开xlsm文件,因为打开xlsm文件时出错。 使用ApachePOI库编写xlsm文件可行吗? 如果可以编写xlsm,请提供如何使用ApachePOI库编写xlsm文件的指南。 谢谢

  • 用户可以将Excel文档保存为. xls或xml-table。结果是一个具有固定结构的xml-file,Excel可以用它纠正工作。 可以用java中的ApachePOI打开这种类型的excel文件吗? 事先谢谢你,安德烈。

  • 我试图读取xlsx格式的excel文件。但是我得到的结果太大,无效的句柄异常。我把文件实例在一个FileInputStream对象,并试图在XSSFWorkbook中设置该对象。但是我得到了这个例外。 我工作的环境中没有安装Microsoft office,并且有开放式office。我没有在open office中编辑我的xlsx文件。但我在open office中打开了文件,然后尝试运行poi代