Попытка улучшить производительность создания отчетов xls с помощью DynamicJasper.Есть предложения в этом направлении? - PullRequest
0 голосов
/ 25 января 2019

Текущая статистика:

Создание файла .xls, содержащего 3 таблицы, каждая из которых содержит строки 100 КБ x 3 столбца, заняло ~ 24 с со следующей разбивкой:

  • построение JRXlsExporter - ~ 6s
  • JRXlsExporter.exportReport () - ~ 18 с

Код был выполнен на следующем оборудовании: i7 6core CPU, 16 ГБ ОЗУ, SSD-накопитель Максимальный размер кучи для JVM был установлен на 4 ГБ.

Добавление фрагмента, чтобы дать вам представление о том, как я добавляю несколько таблиц. Я использую источники данных в памяти для заполнения таблиц.

DynamicReportBuilder drb = new DynamicReportBuilder();
...
DynamicReport subReport = this.createSubreport(report.getSubReports()[i]);
String dsName = String.valueOf(i);
drb.addConcatenatedReport(subReport, new ClassicLayoutManager(),
                    dsName, DJConstants.DATA_SOURCE_ORIGIN_PARAMETER,
                    DJConstants.DATA_SOURCE_TYPE_COLLECTION, false);
...

Версия DynamicJasper:

  • dynamicjasper: 5.1.0
  • jasperreports: 6.3.0
  • Шрифты ядра dynamicjasper: 1.0

Пока пробовал следующие варианты:

  • играл с виртуализацией: без виртуализации , JRSwapFileVirtualizer , JRGzipVirtualizer и JRFileVirtualizer . Лучшие времена были зарегистрированы с использованием JRSwapFileVirtualizer (это то, что используется для предоставленной статистики)
  • попытался изменить net.sf.jasperreports.text.measurer.factory с com.jaspersoft.jasperserver.api.engine.jasperreports.util.SingleLineTextMeasurerFactory [1] но не был ' не может найти любой исходный код для SingleLineTextMeasurerFactory .

[1] https://community.jaspersoft.com/wiki/how-modify-jasperreportsproperties-file-disable-multi-line-data-processing

...