[发明专利]一种基于协程的计算程序执行效率优化方法及系统有效
申请号: | 202010444905.3 | 申请日: | 2020-05-23 |
公开(公告)号: | CN111694661B | 公开(公告)日: | 2022-07-19 |
发明(设计)人: | 侯纪祥 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 济南舜源专利事务所有限公司 37205 | 代理人: | 张营磊 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 计算 程序 执行 效率 优化 方法 系统 | ||
本发明提供一种基于协程的计算程序执行效率优化方法及系统,所述方法步骤如下:S1.CPU启动协程调度器为每个任务分配协程,并启动协程计时任务;S2.CPU判断是否所有协程任务均进入阻塞;若是,协程调度器启动计时协程进行阻塞计时;若否,进入S4;S3.CPU实时判断是否有协程任务解除阻塞;若是,停止阻塞计时,统计阻塞时长;若否,返回S3;S4.CPU等待协程任务执行完毕;S5.CPU判断是否协程调度器中只有协程计时任务;若是,停止协程计时,统计任务总时长,进入S6;若否,返回S1;S6.CPU计算运行效率,计算数据吞吐量,再根据运行效率和数据吞吐量调整协程任务数量,实现计算程序执行效率的优化。
技术领域
本发明属于协程执行效率技术领域,具体涉及一种基于协程的计算程序执行效率优化方法及系统。
背景技术
在程序或服务开发过程中,经常会对数据、网络请求进行一些处理,尤其是数据量比较大时,程序往往会遇到阻塞。一个单线程遇到程序阻塞时,CPU会等待阻塞完毕后再进行接下来的逻辑处理,此时CPU的资源是浪费的。协程,英文名Coroutine,又称微线程,纤程。协程本质上就是一个线程,以前线程任务的切换是由操作系统控制的,遇到阻塞自动切换,这样就可以在一个子任务阻塞时,使CPU切换到另一个子任务运行,保证CPU资源不浪费。但是协程终究还是在一个线程中进行的,适当的协程可以提高程序运算的效率,但是过多的协程则会起到反效果。
程序运行中遇到阻塞IO或者阻塞执行,占用阻塞时间不长,实际开发中往往会忽略该阻塞时间的占用,往往一个线程就直接从头到尾阻塞执行。通常对于阻塞IO,往往利用协程切换另外一个非阻塞任务进行执行,当阻塞完毕后再将CPU资源分配回来。虽然协程可以解决任务阻塞的问题,效率也有所提升,但是面对大批量任务时,执行时间以小时为单位的情况下,执行效率和数据吞吐量仍然是性能提升的瓶颈。
此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种基于协程的计算程序执行效率优化方法及系统,是非常有必要的。
发明内容
针对现有技术的上述计算机程序执行遇到阻塞时,协程可以解决阻塞,但是当大批量任务时,执行效率和数据吞吐量仍是性能提升瓶颈的缺陷,本发明提供一种基于协程的计算程序执行效率优化方法及系统,以解决上述技术问题。
第一方面,本发明提供一种基于协程的计算程序执行效率优化方法,包括如下步骤:
S1.启动协程调度器为每个任务分配协程,并启动协程计时任务;
S2.CPU判断是否所有协程任务均进入阻塞;
若是,协程调度器启动计时协程进行阻塞计时;
若否,进入步骤S4;
S3.CPU实时判断是否有协程任务解除阻塞;
若是,停止阻塞计时,统计阻塞时长;
若否,返回步骤S3;
S4.CPU等待协程任务执行完毕;
S5.CPU判断是否协程调度器中只有协程计时任务;
若是,停止协程计时,统计任务总时长,进入步骤S6;
若否,返回步骤S1;
S6.CPU计算运行效率,计算数据吞吐量,再根据运行效率和数据吞吐量调整协程任务数量,实现计算程序执行效率的优化。
进一步地,步骤S1之前还包括如下步骤:
S1`.CPU判断系统中是否存在多协程;
若否,进入步骤S7;
若是,进入步骤S1;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010444905.3/2.html,转载请声明来源钻瓜专利网。