报表呈现有这么几个阶段:取数、报表计算、生成 html 及页面渲染,报表计算是考察报表性能中较为重要的一环。多数据源(集)关联报表是一种计算量随规模增长较大的报表,适合用于进行此项测试。本文将对比报表的关联运算性能,产品依然是三款:润乾报表、FineReport、smartbi,均使用最新版本,涉及报表数据来源为同库同表。
测试采用多数据集间关联计算,报表格式很简单,具体可参考下面的说明。
用例
POS 交易情况统计,统计所有商户(包括还未使用但已申请且开头 pos 刷卡业务的),使用本行 pos 机刷本行卡,和他行卡刷本行 pos 的数据(另外区分储蓄卡和信用卡),汇总值包括笔数和交易金额。
数据集 5 个:
1、 所有商户(ds1):select * from 商户 where c_code<=? 2、 本行储蓄类(ds2):SELECT * FROM pos交易数据 where tran_type=1 and c_code<=? 3、 本行信用卡类(ds3):SELECT * FROM pos交易数据 where tran_type=2 and c_code<=? 4、 他行储蓄类(ds4):SELECT * FROM pos交易数据 where tran_type=3 and c_code<=? 5、 他行信用卡类(ds5):SELECT * FROM pos交易数据 where tran_type=4 and c_code<=?
通过 c_code(商户编码)关联。
报表模板:
注:本例是对实际业务场景简化后进行的对比,实际情况涉及的 sql 及计算场景复杂的多,可参考: 我们怎样把 S 银行 POS 机交易报表提速 30+ 倍
测试结果
以下数据规模中,“*”左侧数据为商户记录条数,右侧为其他 4 个每数据集的记录条数,如 5000,则 ds2 到 ds5 每个数据集都是 5000 条数据。“报表计算”为从完成取数到生成 html 前时间。另外,报表每页按 100 行分页。
从数据上可看出,润乾稍优于帆软,数据量越大表现越明显,但差距不算大,都比较不错。smartbi 相对较差,20000*20000 规模已有 4、50 倍差距。 以上结果和之前测试渲染及报表容量中报表计算阶段的数据体现也是一致的。
总结
本文对比报表工具解决多源(集)关联计算问题,也是“报表计算”阶段(取数都同库同表同走 jdbc,无区别)考察报表计算能力的情况之一,从数据可以看出润乾性能最高,得益于计算模型的优化,帆软次之,两家都不差,有较强的实用性。smartbi 和帆软报表的制作过程几乎一样,但计算效率却差了数十倍,说明其计算模型有待改进。