发新话题
打印

关于简表的运行效率

关于简表的运行效率

决定报表运行效率的因素很多,比如,硬件的配置、网络、数据库、是否集群、报表的复杂程度、报表引擎的性能。
就报表引擎来说,一次web报表请求,需要经过以下步骤:
1. 解析报表模板
2. 数据准备,一般是jdbc 的sql 查询
3. 报表页生成
  ...
    3.n, 公式(脚本)运算,填充单元格等
  ...
4. 输出报表页面

其中,3.n中的公式运算,会占据大量的cpu时间,因为我们知道,脚本是解析运行的,它的目的是损失效率提高灵活性,脚本的运行效率大大低于编译运行的java class。而在报表模板中, 如"=SUM(A1:B5)"这种计算大量存在,频度非常高,每一次计算,都要经过,解析(parse)、设置上下文、计算等过程。可以说,脚本引擎的优劣,决定报表运行效率,因为,上面的1,2,4步,各报表厂商能改进的余地并不大。

简表(jor)报表引擎采用beanshell脚本引擎,并在beanshell的基础上扩展了脚本语法,也对解析后的脚本,采用了缓存技术,也就是说,只有第一次脚本才需要解析,后续则从缓存中取得,这样,后续的运算,省去了解析这一步,从而提高脚本运行的性能。

可以相信的是,脚本越复杂,报表引擎效率越低。有些报表厂商采用的脚本,自创一系列语法,概念,sql 语法与一般的开发语言语法,混在一起,不仅增加了学习难度,而且,会大大降底报表系统的运行效率。jasperreport采用的是groovy脚本引擎。

TOP

发新话题