• 润乾集算报表层次数据集对性能的影响測试


    1、測试目的

             在同样的硬件和集算报表IDE上測试使用集算报表使用层次数据集与不使用层次数据集之间的性能差异,从而确定层次数据集对报表性能的影响。

    2、环境描写叙述

    測试机型:DellInspiron 3420

    CPU:Intel Corei5-3210M @2.50GHz *4

    RAM:4G

    HDD:西数WDC(500G5400转/分)

    操作系统:Win7(X64)SP1

    JDK:1.6

    数据库:hsqldb

    集算报表版本号:5.0

    3、数据描写叙述

    表数据


    4、用例描写叙述

    4.1、分组明细报表

    使用销售记录表,依照销售人员分组统计订单金额后,列出每一个销售人员的订单明细,报表格式为:


    4.1.1、不使用层次数据集实现

    sql数据集

    ds1: select 员工ID,订单ID,订购日期,订单金额,客户 from 销售记录表

    ds2: select * from 员工表

     

    报表模板


    设置A2显示值表达式:ds2.select(姓名,编号==value())

    4.1.2、使用层次数据集实现

    集算器数据集


    报表模板



    4.2、固定分组报表

    通过订单、订单明细和客户表,统计环首都经济圈、珠三角、长三角地区的城市订单情况。这里地区未在数据库中存储,须要预置。

    报表格式:


    4.2.1、不使用层次数据集实现

    内建数据集ds1:


    sql数据集ds2

    SELECT 客户.城市,订单明细.数量,订单明细.单位价格,订单明细.折扣 FROM 客户,订单,订单明细 WHERE 客户.客户ID = 订单.客户ID  AND  订单.订单ID=订单明细.订单ID

    报表模板


    4.2.2、使用层次数据集实现

    集算器数据集


    报表模板


    4.3、主子表

    使用订单表和订单明细表。查询每一个订单详情以及该订单下的订单明细,报表格式例如以下:


    4.3.1、不使用层次数据集实现

    sql数据集

    SELECT 订单明细.单位价格,订单明细.产品ID,订单明细.折扣,订单明细.数量,订单明细.订单ID,订单.订单ID,订单.客户ID,订单.发货日期,订单.到货日期,订单.货主名称,订单.运货商,订单.运货费,订单.货主城市 FROM 订单,订单明细 WHERE 订单.订单ID = 订单明细.订单ID

    报表模板


    4.3.2、使用层次数据集实现

    集算器数据集

     

    报表模板

    5、測试方法

    使用同一个集算报表设计器,依据同样数据源分别使用层次数据集、不使用层次数据集制作同样展现结果的报表。比較二者之间的差异,确定集算报表层次数据集对报表性能的影响。

    6、測试结果

    *下表结果数据单位为:秒


    【说明】执行结果,记录的是报表完整执行时间,从取数開始到报表展现结束的时间。

    7、解读分析

    从上面的结果能够看到,常规分组明细报表相差不太明显(1秒基本上在误差范围内),其他两种情况使用层次数据集都能够提升报表的计算性能,特别是主子表的性能提升很明显。

    分析其原因,尽管常规分组报表在报表工具中计算使用了更慢速的排序执行,但50万行的实际排序时间不到1秒,在总时间中占比較少;这时层次方案即使使用了更高效的hash分组(单对照分组时间能快出5-10倍),在总时时也不会有更明显的提升了。假设数据量再大,排序时间占比提升时,层次方案将会有较大优势,只是作为报表。在呈现阶段非常少会涉及到更大的数据量了。

    而固定分组报表和主子报表都须要使用遍历方式来建立关联相应。这时计算时间的占比較高。变成了主要时间消耗环节,特别是主子报表更为明显。这样。层次方案中使用集算器事先完毕关联就会获得更高效的运算性能了。


  • 相关阅读:
    HDU1325 Is It A Tree? (并查集判断有向图是否是树)
    DRF 视图家族及路由层补充
    DRF 外键字段深度查询优化、ListSerializer辅助完成群改
    DRF的orm多表关系补充及serializer子序列化
    DRF序列化
    DRF的封装:APIView类及五大模块
    DRF简介/接口概念
    vue-axios插件、django-cors插件、及vue如何使用第三方前端样式库:element/jQuery/bootstrap
    Vue项目的创建、路由、及生命周期钩子
    Vue框架-组件的概念及使用
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7068323.html
Copyright © 2020-2023  润新知