JasperReportsとBirtレポート エンジンの評価を行っています。
両方のツールで単純なレポートを設計しました。レポートに 20 個の値をパラメーターとして指定し、レポートの SQL 選択から他の 6 個の値を詳細関係として入力します (これは、それらの行が多数あることを意味します)。JavaとPDF
エクスポート
で両方のレポートの作成をプログラムしました(両方のレポート エンジンがiTextを使用していると思います)
。各レポートに必要な時間を測定しました。レポートはまったく同じで、同じプロセスから実行されます。
レポートは、10 セットの値に対して実行されました。そこで、10 件のレポートそれぞれの時間を測定しました。結果は次のとおりです。
10 個の値のJasper レポートを印刷します。測定時間が必要です。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 の動作を遅くするコードに何か問題がありますか? それぞれの場合に使用したコードを投稿しています。
ジャスパーレポート:
// 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 のパフォーマンスを最適化する方法はありますか?