流程引擎性能调优报告

合集下载

高性能物理仿真引擎设计与实现

高性能物理仿真引擎设计与实现

高性能物理仿真引擎设计与实现摘要:本文将探讨高性能物理仿真引擎的设计与实现。

物理仿真引擎是一种软件工具,能够模拟和计算现实世界中物体的运动和相互作用。

高性能物理仿真引擎的设计需考虑到计算效率、精确度和实时性等方面的要求。

在本文中,我们将介绍物理仿真引擎的工作原理、关键技术、设计流程以及性能优化的方法。

同时,我们还将基于实例,展示一个高性能物理仿真引擎的实现过程。

1. 引言物理仿真引擎是一种能够模拟真实世界物理规律的软件工具。

它被广泛应用于游戏开发、虚拟现实、工程仿真等领域。

高性能物理仿真引擎的设计和实现对于实时计算、大规模并行计算和复杂物理模型的处理具有重要意义。

2. 物理仿真引擎的工作原理物理仿真引擎基于牛顿力学和运动学原理,将物体运动和相互作用的规律转化为数学表达式。

通过数值计算和迭代,确定物体在每个时间步的位置、速度和加速度等参数。

基本的工作原理包括模拟物理力、模拟碰撞检测和处理、模拟约束和关节等。

其中,模拟物理力是模拟物体之间的运动和相互作用力;模拟碰撞检测和处理用于模拟物体之间的碰撞情况;模拟约束和关节用于模拟物体的约束和连接关系。

3. 关键技术在设计高性能物理仿真引擎时,需要考虑以下关键技术:3.1 并行计算:利用并行计算技术,将物理仿真任务分解为多个子任务,通过多线程或分布式计算来提高计算效率。

3.2 碰撞检测算法:使用高效的碰撞检测算法,如包围盒树、分离轴定理等,以减少碰撞检测的计算量。

3.3 物体的层次化表示:将物体的网格模型按照层次结构进行划分,以提高碰撞检测的效率。

3.4 连续碰撞检测:为了处理高速运动物体的碰撞情况,引入连续碰撞检测算法,如基于时间的表面扫描算法。

3.5 约束求解算法:用于处理物体的约束和关节问题,如迭代求解算法、拉格朗日乘子法等。

4. 高性能物理仿真引擎的设计流程在设计高性能物理仿真引擎时,可以按照以下流程进行:4.1 确定需求:明确物理仿真引擎的应用领域和性能要求,包括计算效率、精确度和实时性等。

oracle数据库性能调优

oracle数据库性能调优

oracle数据库性能调优⼀:注意WHERE⼦句中的连接顺序:ORACLE采⽤⾃下⽽上的顺序解析WHERE⼦句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最⼤数量记录的条件必须写在WHERE⼦句的末尾.尤其是“主键ID=?”这样的条件。

⼆: SELECT⼦句中避免使⽤ ‘ * ‘:ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个⼯作是通过查询数据字典完成的, 这意味着将耗费更多的时间。

简单地讲,语句执⾏的时间越短越好(尤其对于系统的终端⽤户来说)。

⽽对于查询语句,由于全表扫描读取的数据多,尤其是对于⼤型表不仅查询速度慢,⽽且对磁盘IO造成⼤的压⼒,通常都要避免,⽽避免的⽅式通常是使⽤索引Index。

三:使⽤索引的优势与代价。

优势:1)索引是表的⼀个概念部分,⽤来提⾼检索数据的效率,ORACLE使⽤了⼀个复杂的⾃平衡B-tree结构. 通常,通过索引查询数据⽐全表扫描要快. 当ORACLE找出执⾏查询和Update语句的最佳路径时, ORACLE优化器将使⽤索引. 同样在联结多个表时使⽤索引也可以提⾼效率. 2)另⼀个使⽤索引的好处是,它提供了主键(primary key)的唯⼀性验证.。

那些LONG或LONG RAW数据类型, 你可以索引⼏乎所有的列. 通常, 在⼤型表中使⽤索引特别有效. 当然,你也会发现, 在扫描⼩表时,使⽤索引同样能提⾼效率.代价:虽然使⽤索引能得到查询效率的提⾼,但是我们也必须注意到它的代价. 索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时, 索引本⾝也会被修改. 这意味着每条记录的INSERT , DELETE , UPDATE将为此多付出4 , 5 次的磁盘I/O . 因为索引需要额外的存储空间和处理,那些不必要的索引反⽽会使查询反应时间变慢.。

⽽且表越⼤,影响越严重。

使⽤索引需要注意的地⽅:1、避免在索引列上使⽤NOT , 我们要避免在索引列上使⽤NOT, NOT会产⽣在和在索引列上使⽤函数相同的影响. 当ORACLE”遇到”NOT,他就会停⽌使⽤索引转⽽执⾏全表扫描.2、避免在索引列上使⽤计算.WHERE⼦句中,如果索引列是函数的⼀部分.优化器将不使⽤索引⽽使⽤全表扫描.举例:代码如下:低效:SELECT … FROM DEPT WHERE SAL * 12 > 25000;⾼效:SELECT … FROM DEPT WHERE SAL > 25000/12;3、避免在索引列上使⽤IS NULL和IS NOT NULL避免在索引中使⽤任何可以为空的列,ORACLE性能上将⽆法使⽤该索引.对于单列索引,如果列包含空值,索引中将不存在此记录. 对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果⾄少有⼀个列不为空,则记录存在于索引中.举例: 如果唯⼀性索引建⽴在表的A列和B列上, 并且表中存在⼀条记录的A,B值为(123,null) , ORACLE将不接受下⼀条具有相同A,B值(123,null)的记录(插⼊). 然⽽如果所有的索引列都为空,ORACLE将认为整个键值为空⽽空不等于空. 因此你可以插⼊1000 条具有相同键值的记录,当然它们都是空! 因为空值不存在于索引列中,所以WHERE⼦句中对索引列进⾏空值⽐较将使ORACLE停⽤该索引.代码如下:低效:(索引失效) SELECT … FROM DEPARTMENT WHERE DEPT_CODE IS NOT NULL;⾼效:(索引有效) SELECT … FROM DEPARTMENT WHERE DEPT_CODE >=0;4、注意通配符%的影响使⽤通配符的情况下Oracle可能会停⽤该索引。

前端开发部年终总结:前端开发技术创新、页面优化与用户体验提升

前端开发部年终总结:前端开发技术创新、页面优化与用户体验提升
详细描述
通过Jenkins等持续集成工具,前端开发部 实现了自动化的构建、测试和部署流程, 提高了团队协作的效率和代码质量。
CHAPTER
02
页面优化
性能优化
减少请求次数
通过合并、压缩、CDN 等方式,减少页面加载 时的请求次数,提高页
面加载速度。
优化图片
采用适当的图片格式, 压缩图片大小,减少图
响应式设计的重要性
详细描述
根据不同设备和屏幕尺寸进行响应式设计,确保在不同设备上都能获得良好的用户体验。
交互设计优化
总结词
用户研究与实践结合
详细描述
通过用户研究和实际测试,不断优化交互设计,提升用户体验。
视觉设计优化
总结词
视觉传达的力量
详细描述
通过合理的色彩、字体、布局等 视觉元素,传达品牌价值和信息 ,提升用户认知和信任感。
02
团队协作问题
初期团队协作不够顺畅,通过定 期的团队建设活动和沟通会议,
加强了团队协作。
04
性能瓶颈
在项目上线初期遇到了性能瓶颈 ,通过分析和调优解决了性能问
题。
下一步工作计划与展望
01
持续优化性能
进一步研究前端性能优化技术,持 续提高网站性能。
新技术研究
研究前端新技术,保持技术领先优 势。
03
使用事件代理
事件代理可以避免为每个元素 单独绑定事件,减少内存占用 和提高性能。
避免使用昂贵的DOM操 作
昂贵的DOM操作如 `innerHTML`、 `appendChild`等会重排或重 绘页面,导致性能下降。尽量 使用`textContent`或 `innerText`来代替。
使用模块化代码

前端性能测试(H5性能测试)

前端性能测试(H5性能测试)

前端性能测试(H5性能测试)前端性能调优⽅法同样适⽤于H5。

1、H5前端性能知识点学习前端性能,必须对HTTP协议有所了解。

1.1 浏览器渲染引擎浏览器是Html解析和页⾯最终展⽰的⼯具。

浏览器的主要功能:将⽤户选择的web资源呈现出来,需要从服务器请求资源,并将其显⽰在浏览器窗⼝中,资源的格式通常是HTML,也包括PDF、image及其它格式。

在浏览器组成部分中,渲染引擎是⽤户直接相关,呈现⽤户所需页⾯的部分。

浏览器内核[渲染引擎]:作⽤是将页⾯转变成可视化的图像结果。

渲染引擎⼯作流:第⼀步,解析HTML构建DOM树:从html标签的解析开始,将各种标签解析为dom树中的各个节点,标签和dom树种的节点是⼀⼀对应关系。

第⼆步,构建渲染树:将CSS和style标签中的样式信息解析为渲染树,渲染树由⼀些包含有颜⾊和⼤⼩等属性的矩形组成,将按照正确的顺序显⽰到屏幕上。

第三步,渲染树布局:确定每个节点在屏幕上的确切显⽰位置。

第四步,渲染树绘制:遍历渲染树并⽤UI后端层将每⼀个节点绘制出来。

H5页⾯执⾏过程:[页⾯加载耗时:firstPaint、DomContentLoaded(⾸屏页⾯可见)、OnLoad(⾸屏加载完成)]1.解析HTML结构2.加载外部脚本和样式表⽂件。

3.解析并执⾏脚本代码。

//部分脚本会阻塞页⾯的加载。

4.DOM树构建完成。

//DOMContentLoaded事件。

5.加载图⽚等外部⽂件。

6.页⾯加载完毕。

//load事件1.2 测试关注指标HTTP相关http请求个数。

解决⽅案:CSS精灵、图⽚地图、js css合并。

2.组件是否压缩。

解决⽅案:压缩⽅法、压缩对象、图⽚格式和⼤⼩是否合适、CSS放在顶部、JS放在底部、js & CSS压缩、是否添加缓存、避免⾮200返回值、使⽤CDN。

时间相关[耗时]1.⽩屏时间:⽤户⾸次看到⽹页有内容的时间,即第⼀次渲染流程完成时间。

OracleWorkFlow(工作流)(二)(2024)

OracleWorkFlow(工作流)(二)(2024)
OracleWorkFlow(工 作流)(二)
2024/1/29
1
目录
2024/1/29
• 工作流基本概念与原理 • Oracle WorkFlow核心功能解析 • Oracle WorkFlow在企业级应用中的实
践 • 常见问题诊断与解决方案探讨 • 总结回顾与展望未来发展趋势
2
CHAPTER 01
工作流基本概念与原理
2024/1/29
3
工作流定义及作用
定义
工作流是一类能够完全或者部分自动 执行的经营过程,它根据一系列过程 规则,文档、信息或任务能够在不同 的执行者之间传递与执行。
作用
工作流的主要作用是实现业务过程的 自动化,提高业务处理效率,降低出 错率,并为企业提供业务过程的可视 化监控和管理。
20
行业应用前景展望
01 02
数字化转型
随着企业数字化转型的加速推进,工作流技术将在更多领域得到应用, 如智能制造、智慧城市、金融科技等,助力企业实现业务流程自动化和 智能化。
云计算与微服务
云计算和微服务技术的发展将为工作流技术带来新的机遇,通过云原生 和微服务架构的支持,工作流系统将更加灵活、可扩展和易于集成。
事件驱动架构
采用事件驱动架构,实现对流程中各种事件 的实时响应和处理。
异步处理机制
支持异步处理任务,提高系统吞吐量和响应 速度。
2024/1/29
容错和恢复能力
具备强大的容错和恢复能力,确保流程在异 常情况下能够正确执行或恢复。
9
流程监控与优化手段
实时监控
提供实时监控功能,让用户随时了解流程执 行情况和性能指标。
13
集成第三方系统实现数据交互
集成需求

MySQL中的内存调优和IO优化方法

MySQL中的内存调优和IO优化方法

MySQL中的内存调优和IO优化方法随着数据量的增加,数据库的性能优化变得越来越重要。

在MySQL中,内存和IO是两个关键的性能瓶颈。

本文将介绍MySQL中的内存调优和IO优化方法,帮助您更好地优化数据库性能。

一、MySQL中的内存调优1. 设定合理的缓冲池大小MySQL的缓冲池使用在InnoDB存储引擎中,用于存放数据和索引的页面。

缓冲池的大小决定了可以缓存的数据量,从而影响查询的性能。

一般来说,缓冲池大小应该设置为系统内存的70-80%。

可以通过修改配置文件(f)中的参数innodb_buffer_pool_size来调整缓冲池大小。

2. 调整查询缓存查询缓存是MySQL中用于缓存查询结果的功能。

尽管查询缓存可以提高一些相同查询的性能,但在高并发的情况下,查询缓存的效果可能不佳。

可以通过修改配置文件中的参数query_cache_size和query_cache_type来调整查询缓存的大小和使用策略,以适应不同的应用场景。

3. 优化临时表的内存使用当执行查询或排序操作时,MySQL可能会在内存中创建临时表,临时表的内存使用对性能有很大影响。

可以通过修改配置文件中的参数tmp_table_size和max_heap_table_size来调整临时表的内存使用。

尽量将临时表的操作放到内存中,避免使用磁盘临时表。

二、MySQL中的IO优化1. 提高磁盘性能磁盘是数据库中最慢的组件之一,提高磁盘性能可以显著提升数据库的响应速度。

以下是一些提高磁盘性能的方法:- 使用RAID技术:RAID可以通过将数据分布在多个磁盘上来提高读写性能和数据冗余能力。

可以选择适合的RAID级别来满足性能和容错要求。

- 使用高速硬盘:使用SSD(固态硬盘)或高转速的SAS硬盘可以显著提升磁盘性能。

- 分区和格式化硬盘:合理分区和格式化硬盘可以提高磁盘的读写性能。

2. 使用合适的存储引擎MySQL支持多种存储引擎,每种引擎都有其特点和适用场景。

Apusic应用服务器性能调优

netclinux安全可靠windowsjms高效稳定mq网络mq基础架构平台专家方便的管理配置和监控功能路由连接组网传输队列管理文件池管理传输通道管理存储管理jms通道管理基础架构平台专家基础架构平台专家金蝶门户平台aps多级门户组织内部门户部门门户个人桌面组织外部门户合作伙伴门户apusicportalserver企业级搜索引擎web内容管理wcm文档管理dm协作平台管理控制台api内容管理平台acmserviceapusicportalweb容器apusicportlet容器单点登录sso用户身份管理角色及权限管理portal开发工具组织数据数据库ldap基础架构平台专家单点登录1请求登录2请求用户信息用户4返回令牌3返回用户信息统一身份认证ldap服务器5带令牌urlcookie访问业务系统8返回用户请求的资源6验证令牌7返回验证结果嵌入ssoagent应用系统?单点登录需要对遗留的应用系统进行改造和二次开发基础架构平台专家信息聚合门户平台互联网信息mashup内置图表portletsso之后超链接打开新窗口基础架构平台专家页面嵌入整体应用接入界面portlet封装单个界面接入业务数据库数据展示数据接入内容管理内容与显示分离预置丰富的显示组件apusicwcm帮助组织快速构建一站式服务窗口portlet应用发布到个性化定制内容格式将电子商务政务网站打造成一体化处理平台电子商务政务网站基础架构平台专家迅捷体验?提供全文检索jcr搜索及xpath搜索三种搜索方式支持附件的全文检索?用户界面个性化
虚拟机 1 CPU 2G内存 10G存储
智能化的自我管理,使IT扩展更敏捷
虚拟CPU 内存 存储 网络
资源池
基础架构平台专家
创新的系统实施模式
操作系统 Linux Windows 基础软件 负载均衡 器 应用服务 器 数据库 …

调优面试题目(3篇)

第1篇一、面试背景随着大数据时代的到来,数据库技术的重要性日益凸显。

MySQL作为一款高性能、开源的关系型数据库,广泛应用于各类业务系统中。

SQL调优是数据库优化的重要环节,能够显著提升数据库的性能,降低系统成本。

本面试题目旨在考察应聘者对MySQL SQL调优的掌握程度,以及在实际场景中解决问题的能力。

二、面试题目1. 基础概念(1)请简要介绍MySQL数据库的存储引擎,并说明InnoDB和MyISAM两种引擎在SQL调优中的优缺点。

(2)什么是索引?请解释索引的类型、创建索引的原则以及索引的优缺点。

(3)什么是查询缓存?如何判断查询缓存是否有效?如何优化查询缓存?2. SQL语句优化(1)请分析以下SQL语句的执行计划,并说明如何优化:```sqlSELECT FROM users WHERE age > 20 AND gender = 'male';```(2)请分析以下SQL语句的执行计划,并说明如何优化:```sqlSELECT name, email FROM users WHERE (age BETWEEN 20 AND 30) OR (age BETWEEN 40 AND 50);```(3)请分析以下SQL语句的执行计划,并说明如何优化:```sqlSELECT FROM orders WHERE status IN ('shipped', 'delivered');```3. 索引优化(1)请解释什么是索引失效,并举例说明。

(2)请分析以下场景,说明如何创建合适的索引:- 查询用户表,根据用户ID获取用户信息。

- 查询订单表,根据订单ID获取订单详情。

- 查询商品表,根据商品分类获取商品列表。

(3)请解释什么是索引碎片,并说明如何处理索引碎片。

4. 查询缓存优化(1)请解释查询缓存的工作原理,并说明如何判断查询缓存是否有效。

平台优化搭建方案

平台优化搭建方案引言在互联网快速发展的时代,不断有新的平台应运而生。

然而,这些平台往往面临着性能和用户体验的挑战。

因此,平台优化搭建方案变得至关重要。

本文将介绍如何通过一系列的措施来提高平台的性能和用户体验。

优化目标在开始优化之前,我们需要明确优化的目标。

一般来说,平台优化的目标可以分为以下几个方面:1.性能优化:提高平台的响应速度和处理能力。

2.稳定性优化:减少平台的故障和崩溃,提高系统的稳定性。

3.安全优化:保护用户数据的安全和隐私,防止恶意攻击。

4.用户体验优化:提供简洁直观的界面和良好的交互体验。

优化方案1. 服务器优化服务器是平台的核心组件,优化服务器的配置和性能可以显著提高平台的性能和响应速度。

具体的优化方案包括:•使用高性能的服务器硬件,如高性能处理器和大容量内存。

•配置适当的服务器软件和服务,如负载均衡器和缓存服务。

•对服务器进行监控和性能调优,及时发现和解决性能问题。

2. 数据库优化数据库是平台存储和管理数据的关键组件。

优化数据库的性能可以提高平台的数据读写速度和处理能力。

具体的优化方案包括:•使用高性能的数据库引擎,如MySQL或MongoDB。

•对数据库进行索引和分区,以加快数据的查询和检索速度。

•使用数据库缓存,减少对数据库的频繁访问。

•定期进行数据库维护和优化,如定期清理过期数据和优化查询语句。

3. 前端优化前端是用户和平台之间的接口,优化前端的性能和用户体验可以提高用户对平台的满意度。

具体的优化方案包括:•优化网页加载速度,如使用浏览器缓存和压缩资源。

•使用异步请求和延迟加载,减少页面的加载时间。

•优化页面布局和设计,提高页面的可用性和易用性。

•对前端代码进行压缩和优化,减少代码的冗余和重复。

4. 安全优化安全是平台优化的一个重要方面,保护用户数据的安全和隐私可以提高用户对平台的信任度。

具体的安全优化方案包括:•使用HTTPS协议,保护数据在传输过程中的安全。

•对用户输入进行验证和过滤,防止恶意代码注入和跨站脚本攻击。

微软MOC10081A第10章故障排除和性能调优

•优化工作负荷的 索引和分区
SQL Server
Management Studio 报表 •在服务器级别和 数据库级别提供
SQL Server 管 理包 •用于 System Center Operations Manager
•监视可用性和性 能
索引对性能的影响
表扫描 SQL Server 读取索引表页
1 查看查询 2 查看查询环境 3 完成查询故障排除过程
演示:查询调优
本演示中,你将了解: • 如何调优查询以提高性能
第 3 节:使用资源调控器
• 资源调控器简介 • 资源调控器概念 • 实施资源调控器 • 监视资源调控器
资源调控器简介
ห้องสมุดไป่ตู้
SQL Server
备份
OLTP 活动
管理 任务
管理 工作负荷
实施资源调控器
1 创建工作负荷组 2 创建并设置分类器 UDF 3 启用或重新配置资源调控器 4 运行工作负荷,监视资源使用状况
监视资源调控器
任务关键型应 用程序
低重要性应用程 序 – 限制为 10%的 CPU
演示:配置资源调控器
本演示中,你将了解如何: • 使用资源调控器 • 创建和配置资源调控器组件 • 使用 SQL Server 性能对象查看关键数据
课程评估
• 性能调优 • 性能调优工具 • 索引对性能的影响 • 使用数据库引擎优化顾问 • 查询调优简介
性能调优
设计
运行
监视
性能调优工具
SQL Server Profiler •捕获 SQL Server 活动
•查看并回放捕 获的工作负荷
•与系统监视器 关联
数据库优化顾问 •深入了解数据库 的索引和分区结 构
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

流程引擎性能调优报告
1.目的
由于流程引擎属于平台基础模块,不可避免的需要在性能上达到较高的标准。
目前,流程引擎的功能以及完成大半,已经可以抽调资源来进行性能调优的前期研
究。一方面可以解决一些实际存在的性能问题,另一方面也可以积累经验,为今后
的深入性能调优做好技术储备。

2.调优范围

由于目前仍然以功能需求为主,在性能调优上可以投入的时间和人力都十分有限。
所以此次性能调优只针对流程启动和待办查询两个方面。

3.现状

 经过多线程并发测试,简单流程启动需要消耗700ms,复杂流程(第一个节点
为会签节点)启动消耗2000ms

 在大数据量(50000左右待办)并发测试下,待办查询评价消耗时间4000ms
4.分析及解决方案

4.1流程启动
现状及分析:
流程启动时,遇到第一个任务节点,需要执行UserTaskBehavior中的execute方
法。在方法中,需要向Task中存入待办变量,而存入之前,先要将从数据表中加载现
有变量到缓存中,这个动作称之为初始化缓存,每次初始化缓存均需耗时400ms左右,
会签节点中每个子节点以及子流程节点的初始化均会消耗相应时间。

进一步查知,该动作执行'SELECT * FROM activiti_test.act_ru_variable where
task_id_ = ?;'脚本,而where字句中的task_id_没有建立索引,此时表
act_ru_variable中数据已达100000条。
解决方案:
1)建立索引,提升单次查询速度
2)缓存初始化时,判断如果task为新建立,则无需从数据库中加载数据
结果:
只实行了第一条改进措施,执行后,简单流程启动缩短为20ms左右,复杂流程启
动缩短为60ms左右

4.2待办查询

分析及方案:
由于目前架构,待办查询分为三个主要部分:activiti引擎待办查询、业务待办二
次封装以及json object转换。所以调优也要从上述三个方面分别考虑:

 Activiti引擎待办查询
a) 在大数据量(50000条)下,activiti查询待办需要消耗500ms左右时间,进一
步跟踪发现时间完全被mybatis消耗。最终发现activiti利用了mybatis默认
分页方式,即将数据全部加载到内存中,然后分页,这种方式势必造成存储
上的压力以及时间上的冗长。最终,决定利用mybatis的动态sql技术,在查
询语句中插入limit字句,利用数据库自带的分页技术。经测试查询时间可以
降低到100ms以内

b) 由于分页需要,待办查询需要获知满足条件的待办总数,于是需要执行 select
count语句,但是经测试 select count语句需要耗时150ms左右,即使加入物
理分页技术也无法提高。由于待办查询中,条件主要为assignee,及执行人,
所以在assignee字段上建立索引。在建立索引后,select count 语句执行时间
缩短为 30~50ms,但是主查询语句的执行时间却增加到600ms。经查,activiti
在待办查询语句中有 select distinct *字样,将 distinct去掉,主查询语句消耗
时间降到100ms以内。

 业务待办二次封装
由于业务需要,我们需要对查询出的原生待办进行二次封装,加入必须的元素。
优化前,封装单个对象需要耗时200多ms,如果返回10个对象,就需耗时2000
多ms。经调查,在封装中,包括:封装基本待办字段、封装待办扩展字段(如果
为会签)、获取流出的流转线、获取流程变量、判断当前待办是否为被驳回待办、
判断当前待办是否可以驳回到发起人、获取可以驳回的节点、封装催办信息、获
取绑定表单、获取绑定的权限等。如此多的操作集中在待办封装方法中,必然造
成效率低下。而待办列表的查询结果只需要基本字段即可,所以我建立了新的封
装方法,只包括:封装基本待办字段、获取流程变量、封装催办信息等操作。另
一方面,建立了相关的索引。经测试,单次待办封装时间可以降低到10ms左右。

 Json object转换
通过以上两方面的性能调优,已经可以将单次的待办查询时间减低到200ms以内
(50000条数据量,10线程并发)。但是,从rest客户端调用时,如果单线程多次
调用,结果尚算正常,如果多线程并发,则性能急剧下降,单次查询耗时可达
1000ms以上。经调查,rest application中调用的 ProcessEngineFactory类中的
getProcessEngineByName方法为static方法,且有synchronized前缀,此处在
并发状态下必然会造成性能下降。与此类似,工具类 DateUtil 的方法中也存在

synchronized前缀。将这两处去掉后,性能数据回升,10线程并发的情况下单次查询
(通过rest)为100多ms。

5总结

通过以上分析,对于今后的引擎调优工作有四点建议:
1. 建立良好的数据模型(不用添加不必要的数据库关联)
2. 建立必要的索引
3. 减少不必要的计算(例如待办的封装)
4. 仔细权衡synchronized关键字的实用(尤其是方法级和类级)

相关文档
最新文档