【发布时间】:2013-07-29 08:24:27
【问题描述】:
我正在评估 JasperReports 和 Birt 报告引擎。
我在这两个工具中设计了一个简单的报告,其中我将 20 个值作为参数提供给报告,并从报告中的 SQL 选择中填充 6 个其他值作为详细关系(这意味着我有很多行)。
我用 Java 编写了两个报告的创建和 PDF 导出(我认为两个报告引擎都使用 iText)
我测量了每份报告所需的时间。报告完全相同,并且是从同一进程运行的。
该报告针对 10 组值运行。所以我测量了 10 份报告中每一份的时间。结果是:
打印 Jasper 报告 10 个值。测量所需的时间。 110 109 141 125 110 125 110 125 109 110 贾斯珀完成了!!!
打印 10 个值的 Birt 报告。测量所需的时间。 1063 1017 1095 1079 1063 1079 1048 1064 1079 1080 完成了!!!
数字以毫秒为单位。
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 的性能?
【问题讨论】:
标签: java performance jasper-reports birt