gpt4 book ai didi

java - 碧 Jade 报告 : fillReport very slow

转载 作者:行者123 更新时间:2023-11-30 11:17:31 36 4
gpt4 key购买 nike

我们有这段代码可以从 XML 输入生成 PDF 报告。它非常慢(在 Solaris T5220 上处理 280K 行需要 2 小时;处理 70K 行需要 10 分钟)。

DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
FileInputStream fileStream = new FileInputStream(rawXmlFile);
ds = docBuilder.parse(fileStream);

Map<String, Object> params = new HashMap<String, Object>();
params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, ds);
params.put(JRXPathQueryExecuterFactory.XML_DATE_PATTERN, com.vodafone.gdsp.reporting.enums.xml.DateFormat.DATE_FORMAT_ISO8601);
params.put(JRXPathQueryExecuterFactory.XML_NUMBER_PATTERN, "##0.##");
params.put(JRXPathQueryExecuterFactory.XML_LOCALE, Locale.ENGLISH);
params.put(JRParameter.REPORT_LOCALE, Locale.UK);
params.put("REPORT_DIR", jasperFile.substring(0, jasperFile.lastIndexOf("/")));

try {
virtPageSize = Integer.parseInt(reportConfig.getJasperVirtPageSize());
virtPageDir = reportConfig.getJasperVirtPageDir();
} catch (NullPointerException npe) {
logger.info("Virtual page size and directory not assigned, using the default value of virtPageSize {} and virtPageDir {}", virtPageSize, virtPageDir);
} catch (Exception ex) {
logger.error("Exception while fetching virtual page size and directory {}", ex.getMessage());
}
logger.info("Using Jasper virtual parameters ({}, {})", virtPageSize, virtPageDir);

JRFileVirtualizer virtualizer = new JRFileVirtualizer(virtPageSize, virtPageDir);
JRVirtualizationHelper.setThreadVirtualizer(virtualizer);
params.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);

DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance();
JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory",
"net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");

File jasperReport = new File(jasperFile);
JasperPrint jasperPrint = JasperFillManager.fillReport(new FileInputStream(jasperReport), params);

如您所见,这确实包括“使用 Jaxen”属性 - 但在使用 Jaxen 和不使用 Jaxen 时观察到的性能没有差异。因此,要么我们的“使用 Jaxen”配置不正确,要么我们遇到了不同的问题。

有没有人遇到过这个问题并解决了?有没有人对如何确定问题有任何建议? - 我已经打开了日志记录,但日志记录不是很详细,除了在详细的逐行级别记录东西时 - 没有说“我已经看到'使用 Jaxen' 指令并将使用 Jaxen”或沿着这些方向的任何东西。

非常感谢!

更新:当我在笔记本电脑(Windows 7 系统)上运行它时,280K 报告在 16 分钟内运行;当我在笔记本电脑上使用 Xalan 而不是 Jaxen 运行相同的报告时,我从 08:00 开始,现在是 15:00,但还没有完成;因此 Jaxen 库就是我所需要的。

我不明白的是为什么在 T5220 上运行 Solaris 10 时完全没有区别。我将深入研究 RAM 等等——也许存在资源限制。如果有人遇到过这种情况,我仍然会很感激任何建议。

最佳答案

我也遇到了同样的问题。一个 330ko(2k 行)的 xml,需要 9 800 毫秒,如果我使用 Jaxen,则需要 41 000 毫秒。所以我想知道当前版本 JR 5.6.1 是否已经解决了这个问题。但是如果我运行 q xml wtih 11 114ko(65536 行),它需要 1.7 小时! DOM 运行太慢并且占用大量内存。所以我认为可能应该将其更改为另一种解析方法。萨克斯:http://blog.synyx.de/2012/08/big-jasper-reports-with-custom-xml-datasource/

关于java - 碧 Jade 报告 : fillReport very slow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24310162/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com