jasperreport 第一次导出会很慢的原因

开发工具

jasperreport5.6.0 


原因

         jasperreport的源文件是*.jrxml文件,根据jasperreport的生命周期,报表会经历编译、填充数据、导出等阶段。由于存在jrxml文件被编译为class类的阶段,所以会加载类,具体包括jasperreport-5.6.0.jar部分类(比如JRGroovyCompiler),加载整个groovy-all.jar。正是类加载占据了时间。后续的导出不需要加载类,直接从jvm中就可拿到,所以后续导出速度很快。

注意,在一个应用中,只要导出过一次,后续导出(包括其他报表)都会很快。举个例子说一下吧,比如a、b、c三个报表,现在导出a会比较慢,再导a或者b或者c都会很快。


发现真理的过程

        因为jasperreport声明周期有编译阶段,并且默认language是groovy,所以我得出肯定有编译器将jrxml文件编译成class文件的阶段,然后debug后发现使用JRGroovyCompiler,然后我加了-verbose:class,打印类加载信息后,发现加载这多类,然后才得出上述结论。


jasperreport 第一次导出会很慢的原因_第1张图片




eclipse中打印类加载信息方法

window--->preferences--->install jres---->-verbose:class

jasperreport 第一次导出会很慢的原因_第2张图片

eclipse中打印类加载信息方法

window--->preferences--->install jres---->-verbose:class

你可能感兴趣的:(jasperReport,第一次导出慢)