Ответ 1
Проблема
Кажется, что проблема - это механизм XPath. То есть библиотека, которая анализирует XML файл, ищущий данные.
В то время как iReport Designer использует Jaxen, JasperReport использует Xalan. Xalan действительно медленный по сравнению с Jaxen (действительно очень медленный).
Вот почему проблема возникает только при заполнении отчета из приложения Java, а не из iReports.
Решение
Ну, простое решение, просто добавьте следующую строку в ваше приложение Java, чтобы выбрать Jaxen lib вместо стандартного Xalan lib (он устарел, но он работает):
JRProperties.setProperty("net.sf.jasperreports.xpath.executer.factory",
"net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");
Забастовкa >
EDIT: эта строка была устаревшей, я нашел правильный способ установки свойств:
DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance();
JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory",
"net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");
Вам также нужно добавить Jaxen.jar в свой путь сборки. Вот ссылка: https://mvnrepository.com/artifact/jaxen/jaxen
В то время как заполнение отчета занимало 3-5 минут с Xalan, теперь он завершается всего за несколько секунд с Jaxen.
Ответ был найден здесь: http://community.jaspersoft.com/questions/536842/jasperreports-too-slow
А также здесь: http://community.jaspersoft.com/wiki/xml-data-source-very-slow-parse