Текущая статистика:
Создание файла .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