gpt4 book ai didi

java - JasperReports 比 Birt 快 10 倍吗?

转载 作者:行者123 更新时间:2023-12-02 07:42:24 24 4
gpt4 key购买 nike

我正在评估 JasperReportsBirt 报告引擎。

我在这两个工具中设计了一个简单的报告,其中我向报告提供了 20 个值作为参数,并从报告中的 SQL 选择中填充了 6 个其他值作为详细关系(这意味着我有很多行)。
我用Java编写了两个报告的创建,并导出了PDF(我认为两个报告引擎都使用iText)
我测量了每个报告所需的时间。这些报告完全相同,并且是从同一进程运行的。
该报告针对 10 组值进行了运行。所以我测量了 10 个报告中每一个的时间。结果是:

打印 10 个值的 Jasper 报告。测量所需时间。110109141125110125110125109110贾斯珀完成了!!!

打印 10 个值的 Birt 报告。测量所需时间。1063101710951079106310791048106410791080伯特完成了!!!

数字以毫秒为单位。

Jasper 有可能比 Birt 快 10 倍吗?我的代码是否有问题导致 Birt 运行速度变慢?我发布了我在每种情况下使用的代码:

JasperReports:

// Export Jasper report
long startTime = System.currentTimeMillis();
JasperPrint myJasperPrint;
JRExporter myJRExporter = new net.sf.jasperreports.engine.export.JRPdfExporter();
try {
myJRExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "C:/Workspace/myProject/jasperReport" + reportNr + ".pdf");
myJasperPrint = JasperFillManager.fillReport("C:/Workspace/myProject/reports/testReport.jasper", jasperParametersMap, connection);
myJRExporter.setParameter(JRExporterParameter.JASPER_PRINT, myJasperPrint);
myJRExporter.exportReport();
return (System.currentTimeMillis() - startTime);
} catch (JRException ex) {
System.out.println(ex);
}

伯特:

// Export Birt report
String format = HTMLRenderOption.OUTPUT_FORMAT_PDF;
EngineConfig config = new EngineConfig();
config.setEngineHome("C:\\Tools\\Eclipse\\plugins\\org.eclipse.birt.report.viewer_4.2.2.v201302041142\\birt");
HTMLEmitterConfig hc = new HTMLEmitterConfig();
HTMLCompleteImageHandler imageHandler = new HTMLCompleteImageHandler();
hc.setImageHandler(imageHandler);
config.setEmitterConfiguration(HTMLRenderOption.OUTPUT_FORMAT_HTML, hc);
ReportEngine engine = new ReportEngine(config);
IReportRunnable report = null;
String reportFilepath = "C:/Workspace/EntireJ/Besuchblatt/reports/new_report.rptdesign";
HTMLRenderOption options = new HTMLRenderOption();
options.setOutputFormat(format);
options.setOutputFileName("C:/Workspace/myProject/birtReport" + reportNr + ".pdf");
long startTime = System.currentTimeMillis();
try {
report = engine.openReportDesign(reportFilepath);
}
catch (EngineException e) {
System.err.println("Report " + reportFilepath + " not found!\n");
engine.destroy( );
return;
}
IRunAndRenderTask task = engine.createRunAndRenderTask(report);
task.setRenderOption(options);
task.setParameterValues(parametersMap);
try {
task.run();
return (System.currentTimeMillis() - startTime);
}
catch ( EngineException e1 ) {
System.err.println( "Report " + reportFilepath + " run failed.\n");
System.err.println( e1.toString( ) );
}
engine.destroy( );

在我的案例中,有没有办法优化 Birt 的性能?

最佳答案

在阅读类似的讨论并完成我的评估后,我认为在大多数情况下 Birt 实际上比 Jasper 慢得多。为了使其更快,需要采取一些措施,但目前它们会花费时间,而 Jasper 已经为基本报告需求提供了良好的性能。我不知道如果我设置得更好或优化代码或报告模板,它是否可以比 Jasper 表现更好,但在大多数类似的情况下,我在互联网讨论中读到人们只是接受这种性能并保持原样。以下是 openMRS 中 Unresolved 问题的示例:https://tickets.openmrs.org/browse/BIRT-30

我希望下面的图片不会对我投反对票,但我真的很想发布它。我也想过发给老板作为评价的答复,但我不愿意:

Jasper Birt Evaluation

关于java - JasperReports 比 Birt 快 10 倍吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17919213/

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