1、测试目的
在相同的硬件和web容器上测试润乾报表和集算报表的性能,对比在报表中完成分组、排序、过滤、连接、排名的性能差异,以及并发情况下二者的表现。测试过程中,润乾报表将采用报表工具内置的计算引擎,集算报表采用其内置的集算器计算引擎。
2、环境描述
测试机型:Dell Inspiron 3420
CPU:Intel Core i5-3210M @2.50GHz *4
RAM:4G
HDD:西数WDC(500G 5400转/分)
操作系统:Win7(X64) SP1
JDK:1.6
数据库:oracle11g R2
Tomcat:6.0.36_x64
Tomcat JVM内存:-Xms512m-Xmx2048m
润乾报表版本:4.5.6
集算报表版本:5.0
3、数据描述
测试使用到三个表T1、T2、T3,下表为三表信息,其中数据量为记录条数。
T1、T2表结构相同,如下:
T3表结构:
4、用例描述
4.1、分组
使用T2表,在报表中分别按照Date2和Date字段进行分组,进行分组汇总,取数sql:
ds1: select * from t2。
报表格式为:
4.1.1、润乾报表实现
4.1.2、集算报表实现
集算器脚本:
报表模板;
4.2、排序
使用T1表,取50万条记录,在报表按照Date字段进行排序,报表显示5个字段,取数sql:
ds1:select * from t1 where rownum<500000。
报表格式为:
4.2.1、润乾报表实现
4.2.2、集算报表实现
集算器脚本:
报表模板:
4.3、过滤
使用T1表,在报表中按照ID字段过滤,过滤后数据量为82条,取数sql:
ds1:select * from t1。
报表格式为:
4.3.1、润乾报表实现
4.3.2、集算报表实现
集算器脚本:
报表模板:
4.4、连接
使用T2和T3表,在报表中按照T2的ID字段与T3左连接,取数sql:
ds1:select * from t2 where userid<267427523
ds2:select * from t3 where userid<10485202
ds1记录数为:7171;ds2记录数为:12730
报表格式为:
4.4.1、润乾报表实现
4.4.2、集算报表实现
集算器脚本:
报表模板:
4.5、连接
使用T3表,在报表中根据SumTime进行排名,取数sql:ds1: select * from t3 where userid<8883948
数据集ds1记录数为:10430。
报表格式为:
4.5.1、润乾报表实现
4.5.2、集算报表实现
集算器脚本:
报表模板:
4.6、并发分组
使用5.1分组用例,进行多并发分组测试,这里采用4个并发。
5、测试方法
使用两个完全相同的Tomcat(JVM等完全)分别部署润乾报表应用和集算报表应用,报表数据来源相同,润乾报表使用sql数据集,直接取数;集算报表采用集算器数据集,取数在dfx中完成。分别比较报表中完成的分组、排序等报表性能,每个用例测试时前均重启Tomcat,以保证无其他报表占用内存等资源。
此外,由于测试机配置,不同用例使用了不同数据表,故不同用例之间纵向无可比性,主要看横向,即:润乾报表和集算报表的性能差异。
6、测试结果
*下表结果数据单位为:秒
【说明】这里的时间记录是从SQL取数完毕后到报表计算完成,润乾报表的日志中会直接提供这两个时间点,相减即得间隔时间;集算报表需要在脚本中加debug信息记录取完数的时刻,再与报表日志中的计算完报表的时间相比,得到间隔时间。
7、解读分析
集算报表将计算放在集算器脚本中进行,集算器采用了更高效的Hash算法,对于分组等有数据关联的计算有极其显著地提高,对于过滤排序等硬遍历式计算则在算法层面没有较大提升,表现出来的少量提高主要是因为集算器中运算不带有展现属性造成的。
这次测试的所有运算都是单线程的,事实上,集算器还可以支持多线程并行计算以充分利用CPU的多核,还能进一步提升性能,即使在排序和过滤类的运算上也能有数倍提高。而包括润乾报表在内的大部分报表工具目前都不支持多线程并行计算,无法利用CPU的多核提高性能。
相关推荐
- **绩效打分报表**:展示了不同代际用户的绩效评分,可能涉及到系统计算性能和响应速度。 通过上述测试,我们可以全面评估智能系统的性能,找出可能存在的问题,并提出改进措施。对于开发者来说,这是一份宝贵的...
- **性能问题**:优化数据处理逻辑,减少不必要的数据加载和计算。 以上就是润乾报表开发培训的主要知识点概述,涵盖了报表开发的基本原理、设计流程、安装配置等多个方面,希望能帮助您更全面地了解润乾报表的相关...
### 如何做性能测试——性能测试过程详述 #### 1. 综述 ##### 1.1 什么是性能测试 性能测试是一种检验系统在特定负载条件下的性能表现的测试方式,其目的是验证系统是否能够达到预定的性能目标。性能测试通常包含...
10. **测试与调试**:系统上线前需进行全面的功能测试、性能测试和用户体验测试,确保无误后再发布,同时提供详细的文档以便于后期维护和升级。 综上所述,后台仪表盘报表系统设计是一个多维度的工程,涵盖了设计、...
在IT行业中,报表设计是数据分析和业务智能领域不可或缺的一部分。开源报表工具为开发者提供了灵活、高效且成本效益的...在实际项目中,了解每个工具的核心特点并进行充分的测试,将有助于你找到最适合的报表解决方案。
**测试与优化**:通过预览功能检查报表的显示效果,并进行必要的调整。 ### 二、报表功能讲解 #### 数据源设计 - **重要性**:数据源的设计直接影响到报表的质量和性能。合理设计数据源可以提高报表的加载速度和...
飞时达土方软件、CASS土方计算和HTCAD土方软件是业内常见的三款土方计算工具,各自具备不同的特性和优势。在选择适合的软件时,需要...在实际使用中,可以根据软件的性能、功能特点以及计算结果的准确性进行综合评估。
标题中的“被改进的报表源代码”意味着这是一个关于报表生成或数据分析的软件代码,经过了优化和升级,可能涉及到了性能提升、功能增强或者用户体验的改善。在IT领域,报表通常用于展示数据、分析业务状况,是企业和...
1. 执行测试用例,记录测试结果,对比预期输出与实际输出,找出差异。 2. 对于发现的缺陷,记录详细信息,包括复现步骤、影响程度、优先级等。 3. 将缺陷报告给开发团队,跟踪修复进度,直至问题解决。 4. 回归测试...
基于 JAVA EE 的移动数据报表系统的设计与实现 本篇论文旨在设计和实现一个基于 JAVA EE 的移动数据报表系统,以解决旅游景区中游客拥堵的问题。该系统可以实时地向用户和管理者展现游客数据,提供实时的流量监控和...
JMeter与LoadRunner都是业界知名的性能测试工具,但两者有以下显著差异: 1. **支持协议**:JMeter覆盖了Web、SOAP、FTP等多种协议,而LoadRunner支持的协议更加广泛,包括Web、FTP、Oracle等,并在特定时期支持...
一个完善的工资发放系统测试用例设计应该覆盖所有可能的业务场景,确保系统在实际运行中能够准确、高效地处理员工的工资计算、发放以及相关的报表生成。 首先,我们需要理解工资发放系统的基本功能模块,主要包括:...
- **性能基准测试**:对比不同配置或软件版本的性能,为决策提供依据。 - **容量规划**:根据历史性能数据预测未来需求,合理规划硬件和软件资源。 总结来说,"Linux性能数据收集工具" 是一套全面的解决方案,...
### 性能测试经验总结资料知识点详述 #### 一、概述 - **编写目的**:此文档旨在为参与性能测试的相关人员(如需求分析师、开发人员、测试人员等)提供一套全面且实用的性能测试指导手册。目的是帮助他们更好地...
6. **成本控制**:报表应包含项目花费的详细清单,包括人力成本、材料成本和其他相关费用,对比预算进行分析,判断是否在预算范围内。 7. **变更管理**:记录本月发生的任何项目变更,包括变更请求的来源、原因、...
9. **系统测试与优化**:论文最后可能包含了系统测试的过程,包括单元测试、集成测试和性能测试,以及根据测试结果进行的系统优化。 10. **论文结构与规范**:作为一篇学术论文,其结构通常包含引言、技术背景、...
快照对比技术:预测代码修改对性能的影响; 高级打印和输出功能:支持PDF、文本、HTML或Excel兼容的CSV格式。 JProbe Memory Debugger JProbe Memory Debugger可帮助开发人员快速查找Java代码的内存泄露和对象循环...
### 百度前端性能监控与优化实践 #### 一、性能监控平台 百度前端团队构建了一个全面的性能监控平台,旨在实现对各个产品线的统一性能监控。该平台设计的目标包括: - **产品线统一性**:确保所有产品能够在一个...
本研究首先通过对比分析当前流行的并行编程方法和技术,最终选用了基于Python的多进程编程技术来处理批量气象规范报表。Python的多进程编程是通过创建多个进程来实现并行计算的一种方式。由于Python的全局解释器锁...