本公开涉及计算机,尤其涉及一种卡顿检测方法、装置、电子设备、存储介质及程序产品。
背景技术:
1、应用程序的页面在进行渲染时,会开启硬件加速使用gpu加速渲染,而使用gpu加速渲染时可能存在卡顿的情况,进而导致整个应用程序出现卡顿,导致用户体验性下降。
2、而相关技术中无法监测应用程序的gpu卡顿。
技术实现思路
1、有鉴于此,本公开的目的在于提出一种卡顿检测方法、装置、电子设备、存储介质及程序产品。
2、基于上述目的,本公开第一方面提供了一种卡顿检测方法,包括:
3、判断第一应用的渲染主线程是否处于空闲状态,所述渲染主线程用于对所述第一应用的渲染任务进行加速渲染;
4、以预设的卡顿检测间隔生成针对所述第一应用的第一延迟检测任务,并判断所述第一延迟检测任务是否超时执行;
5、若所述渲染主线程处于非空闲状态且所述第一延迟检测任务超时执行,则基于当前执行的第一渲染任务以及所述卡顿检测间隔计算预期发生卡顿的第一时间间隔;
6、基于所述第一渲染任务在所述第一时间间隔内的完成情况确定所述渲染主线程是否处于卡顿状态。
7、在一些实施例中,所述判断渲染主线程中是否处于空闲状态,包括:
8、获取所述渲染主线程中渲染任务的执行状态,在所述渲染主线程中存在待执行的渲染任务以及响应于该渲染任务执行完毕进行计数统计,并基于计数统计结果确定所述渲染主线程是否处于空闲状态。
9、在一些实施例中,所述获取所述渲染主线程中渲染任务的执行状态,在任一渲染任务将要执行以及执行完毕时进行计数统计,并基于计数统计结果确定所述渲染主线程中是否处于空闲状态,包括:
10、通过第一线程监听所述渲染主线程的第一回调接口以及第二回调接口,所述第一回调接口用于在任一渲染任务将要执行时执行回调操作,所述第二回调接口用于在任一渲染任务执行完毕时执行回调操作;
11、当回调所述第一回调接口时,计数统计结果变为奇数,所述渲染主线程处于非空闲状态;当回调所述第二回调接口时,计数统计结果变为偶数,所述渲染主线程处于空闲状态;
12、或者,
13、当回调所述第一回调接口时,计数统计结果变为偶数,所述渲染主线程处于非空闲状态;当回调所述第二回调接口时,计数统计结果变为奇数,所述渲染主线程处于空闲状态。
14、在一些实施例中,所述通过第一线程监听所述渲染主线程的第一回调接口以及第二回调接口之前,还包括:
15、对所述第一线程的计数统计结果进行初始化;以及,通过所述第一线程生成所述第一延迟检测任务。
16、在一些实施例中,所述第一时间间隔与卡顿检测间隔正相关,且所述第一时间间隔与当前检测时间负相关。
17、在一些实施例中,所述基于所述第一渲染任务在所述第一时间间隔内的完成情况确定所述渲染主线程是否处于卡顿状态,包括;
18、在当前检测时间以所述第一时间间隔生成第二延迟检测任务;
19、若在所述第二延迟检测任务触发之前所述第一渲染任务执行完毕,则取消所述第二延迟检测任务并重新生成第一延迟检测任务;
20、若所述第二延迟检测任务被触发,则所述第一渲染任务未执行完毕,则确定所述渲染主线程处于卡顿状态。
21、在一些实施例中,若确定所述渲染主线程处于卡顿状态,所述方法还包括:
22、向所述第一应用的应用主进程发送卡顿通知,以使得所述应用主进程基于所述卡顿通知采集卡顿信息。
23、在一些实施例中,若确定所述渲染主线程处于卡顿状态,所述方法还包括:
24、若连续确定所述渲染主线程处于卡顿状态的次数满足第一预设值,或者,确定所述渲染主线程处于卡顿状态的连续时间满足第二预设值,则重新启动所述渲染主线程。
25、本公开第二方面提供了一种卡顿检测装置,包括:
26、第一判断模块,被配置为:判断第一应用的渲染主线程是否处于空闲状态,所述渲染主线程用于对所述第一应用的渲染任务进行加速渲染;
27、第二判断模块,被配置为:以预设的卡顿检测间隔生成针对所述第一应用的第一延迟检测任务,并判断所述第一延迟检测任务是否超时执行;
28、计算模块,被配置为:若所述渲染主线程处于非空闲状态且所述第一延迟检测任务超时执行,则基于当前执行的第一渲染任务以及所述卡顿检测间隔计算预期发生卡顿的第一时间间隔;
29、确定模块,被配置为:基于所述第一渲染任务在所述第一时间间隔内的完成情况确定所述渲染主线程是否处于卡顿状态。
30、本公开的第三方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的卡顿检测方法。
31、本公开的第四方面提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行第一方面所述的卡顿检测方法。
32、本公开的第五方面提供一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行第一方面所述的卡顿检测方法。
33、从上面所述可以看出,本公开提供的卡顿检测方法、装置、电子设备、存储介质及程序产品,当确定第一应用的渲染主线程处于非空闲状态且针对第一应用的第一延迟检测任务超时执行时,需进一步判断渲染主线程中当前正在执行的第一渲染任务是否耗时过长;可计算预期发生卡顿的第一时间间隔,并获取第一渲染任务在该第一时间间隔内的完成情况,从而确定渲染主线程是否处于卡顿状态,即确定gpu是否卡顿,以便于后续进行卡顿处理和卡顿分析,提高用户的体验性。
1.一种卡顿检测方法,包括:
2.根据权利要求1所述的方法,其中,所述判断渲染主线程中是否处于空闲状态,包括:
3.根据权利要求2所述的方法,其中,所述获取所述渲染主线程中渲染任务的执行状态,在任一渲染任务将要执行以及执行完毕时进行计数统计,并基于计数统计结果确定所述渲染主线程中是否处于空闲状态,包括:
4.根据权利要求3所述的方法,其中,所述通过第一线程监听所述渲染主线程的第一回调接口以及第二回调接口之前,还包括:
5.根据权利要求1所述的方法,其中,所述第一时间间隔与卡顿检测间隔正相关,且所述第一时间间隔与当前检测时间负相关。
6.根据权利要求5所述的方法,其中,所述基于所述第一渲染任务在所述第一时间间隔内的完成情况确定所述渲染主线程是否处于卡顿状态,包括:
7.根据权利要求1所述的方法,其中,若确定所述渲染主线程处于卡顿状态,所述方法还包括:
8.根据权利要求1所述的方法,其中,若确定所述渲染主线程处于卡顿状态,所述方法还包括:
9.一种卡顿检测装置,包括:
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至8任一项所述的卡顿检测方法。
11.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1至8任一项所述的卡顿检测方法。
12.一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行如权利要求1至8中任一项所述的卡顿检测方法。
