CN110990243B - 卡顿分析方法、装置、存储介质和计算设备 - Google Patents
卡顿分析方法、装置、存储介质和计算设备 Download PDFInfo
- Publication number
- CN110990243B CN110990243B CN201911203057.0A CN201911203057A CN110990243B CN 110990243 B CN110990243 B CN 110990243B CN 201911203057 A CN201911203057 A CN 201911203057A CN 110990243 B CN110990243 B CN 110990243B
- Authority
- CN
- China
- Prior art keywords
- event processing
- processing period
- cycles
- preset threshold
- index value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 161
- 238000004458 analytical method Methods 0.000 title claims abstract description 57
- 238000003860 storage Methods 0.000 title claims abstract description 23
- 230000000903 blocking effect Effects 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 claims description 112
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000005096 rolling process Methods 0.000 description 3
- 239000006185 dispersion Substances 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000037452 priming Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明的实施方式提供了一种卡顿分析方法、装置、存储介质和计算设备,所述的卡顿分析方法包括:在应用程序的运行过程中,记录在特定线程的特定模式下,多个运行循环的运行数据;基于记录的多个运行循环的运行数据,得到所述应用程序的卡顿情况。利用本发明的实施例能够实现对终端应用程序的卡顿分析。
Description
技术领域
本发明的实施方式涉及信息技术领域,更具体地,本发明的实施方式涉及卡顿分析方法、装置、存储介质和计算设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
通常,在终端设备运行应用程序(Application,可简写为APP)时,终端将为该APP开启一条主线程,主线程也可称为用户界面UI线程,可处理UI事件例如刷新显示UI等。运行循环(Runloop)通常指事件处理循环,用于实现事件的接收与分发,Runloop是线程的基本组成,可使线程在有待处理事件时工作,无工作时休眠,从而节省资源。
在实际应用中,APP运行过程中时常会发生卡顿,有些由外部原因导致,例如网络问题,有些由内部原因导致,例如APP运行环境问题等等。如何准确快速地对卡顿情况进行分析,便于排除卡顿的诱因,提高***整体性能,是目前研究的重点和热点之一。
发明内容
本发明期望提供一种卡顿分析方法、装置、存储介质和计算设备,以至少解决上述技术问题。
第一方面,本发明实施例提供一种卡顿分析方法,所述方法包括:
在应用程序的运行过程中,记录在特定线程的特定模式下,多个运行循环的运行数据;
基于记录的多个运行循环的运行数据,得到所述应用程序的卡顿情况。
根据本发明实施例的卡顿分析方法,所述运行数据包括运行循环的事件处理周期时长。
根据本发明实施例的卡顿分析方法,所述基于记录的多个运行循环的运行数据,得到所述应用程序的卡顿情况,包括:在存在至少一个运行循环的事件处理周期时长大于或等于预设阈值的情况下,确定所述应用程序出现卡顿。
根据本发明实施例的卡顿分析方法,所述方法还包括:基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的事件处理周期时长和所述多个运行循环的事件处理周期时长,确定所述应用程序的卡顿指标值。
根据本发明实施例的卡顿分析方法,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的事件处理周期时长之和与所述多个运行循环的事件处理周期时长之和的比值;或者,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中发生界面重绘的运行循环的事件处理周期时长之和与所述多个运行循环中发生界面重绘的运行循环的事件处理周期时长之和的比值。
根据本发明实施例的卡顿分析方法,所述方法还包括:基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的数量和所述多个运行循环的数量,确定所述应用程序的卡顿指标值。
根据本发明实施例的卡顿分析方法,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的数量与所述多个运行循环的数量的比值;或者,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中发生界面重绘的运行循环的数量与所述多个运行循环中发生界面重绘的运行循环的数量的比值。
根据本发明实施例的卡顿分析方法,所述运行数据还包括运行循环对应的方法单元信息,所述方法单元信息包括运行循环中调用的方法单元的信息;在确定所述应用程序出现卡顿之后,所述方法还包括:基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环对应的方法单元信息,对卡顿进行定位。
根据本发明实施例的卡顿分析方法,其中,所述基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环对应的方法单元信息,对卡顿进行定位,包括:确定所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中的至少一个方法单元的参考指标值,根据所述参考指标值确定所述至少一个方法单元是否引发卡顿;其中,所述参考指标值包括以下各项中的至少一项:方法单元在运行循环中的调用次数、方法单元在运行循环中的耗时占比、方法单元在运行循环中的总耗时时长。
根据本发明实施例的卡顿分析方法,所述方法单元信息包括关于界面重绘的方法单元的信息。
根据本发明实施例的卡顿分析方法,所述特定线程包括所述应用程序的的主线程;和/或,所述特定模式包括以下各种模式中的至少一种模式:初始化模式、缺省模式、视图滚动模式。
第二方面,本发明实施例提供一种卡顿分析装置,所述装置包括:运行数据记录模块,用于在应用程序的运行过程中,记录在特定线程的特定模式下,多个运行循环的运行数据;卡顿情况分析模块,用于基于记录的多个运行循环的运行数据,得到所述应用程序的卡顿情况。
根据本发明实施例的卡顿分析装置,所述运行数据包括运行循环的事件处理周期时长。
根据本发明实施例的卡顿分析装置,所述运行数据记录模块包括:确定卡顿子模块,用于在存在至少一个运行循环的事件处理周期时长大于或等于预设阈值的情况下,确定所述应用程序出现卡顿。
根据本发明实施例的卡顿分析装置,所述装置还包括:第一卡顿指标值确定模块,用于基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的事件处理周期时长和所述多个运行循环的事件处理周期时长,确定所述应用程序的卡顿指标值。
根据本发明实施例的卡顿分析装置,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的事件处理周期时长之和与所述多个运行循环的事件处理周期时长之和的比值;或者,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中发生界面重绘的运行循环的事件处理周期时长之和与所述多个运行循环中发生界面重绘的运行循环的事件处理周期时长之和的比值。
根据本发明实施例的卡顿分析装置,所述装置还包括:第二卡顿指标值确定模块,用于基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的数量和所述多个运行循环的数量,确定所述应用程序的卡顿指标值。
根据本发明实施例的卡顿分析装置,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的数量与所述多个运行循环的数量的比值;或者,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中发生界面重绘的运行循环的数量与所述多个运行循环中发生界面重绘的运行循环的数量的比值。
根据本发明实施例的卡顿分析装置,所述运行数据还包括运行循环对应的方法单元信息,所述方法单元信息包括运行循环中调用的方法单元的信息;所述装置还包括:卡顿定位模块,用于在确定所述应用程序出现卡顿之后,基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环对应的方法单元信息,对卡顿进行定位。
根据本发明实施例的卡顿分析装置,其中,所述卡顿定位模块包括:参考指标值确定子模块,用于确定所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中的至少一个方法单元的参考指标值;以及,卡顿定位分析子模块,用于根据所述参考指标值确定所述至少一个方法单元是否引发卡顿;其中,所述参考指标值包括以下各项中的至少一项:方法单元在运行循环中的调用次数、方法单元在运行循环中的耗时占比、方法单元在运行循环中的总耗时时长。
根据本发明实施例的卡顿分析装置,所述方法单元信息包括关于界面重绘的方法单元的信息。
根据本发明实施例的卡顿分析装置,所述特定线程包括所述应用程序的的主线程;和/或,所述特定模式包括以下各种模式中的至少一种模式:初始化模式、缺省模式、视图滚动模式。
第三方面,本发明实施例还提供一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行实现上述的卡顿分析方法的步骤。
第四方面,本发明实施例还提供一种计算设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的卡顿分析方法的步骤。
根据本发明实施方式的卡顿分析方法、装置、计算设备和可读存储介质,在APP运行过程中,可针对指定线程的至少一个运行模式,记录该运行模式下Runloop的运行数据,通过对运行数据进行分析可得到APP的卡顿情况,为***性能优化提供参考。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明一实施方式的卡顿分析方法的实现流程图;
图2示意性地示出了本发明一实施方式的APP主线程中一次视图滚动模式的时序示意图;
图3示意性地示出了本发明一实施方式的APP主线程在一种预定运行模式中的一个Runloop周期的时序示意图;
图4示意性地示出了本发明另一实施方式的APP主线程在一种预定运行模式中的一个Runloop周期的时序示意图;
图5示意性地示出了根据本发明一实施方式的卡顿分析方法中,记录的多个方法单元的耗时和方法名示意图;
图6示意性地示出了根据本发明一实施方式的存储介质结构示意图;
图7示意性地示出了根据本发明一实施方式的卡顿分析装置结构示意图;
图8示意性地示出了根据本发明一实施方式的计算设备结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种***、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种卡顿分析方法、存储介质、装置和计算设备。
在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
在本领域,终端中APP运行在不同状态下,特定线程,例如主线程的Runloop也会切换到相应的运行模式,例如用户使用APP滑动屏幕页面时,对应主线程的Runloop进入视图滚动模式(或称视图滑动模式),页面停止滑动,Runloop也退出视图滚动模式。Runloop的运行模式还包括初始化模式、缺省模式等。Runloop在同一时刻只会处在一种运行模式下。关于Runloop的周期,通常以Runloop“从休眠中唤醒”到“即将进入休眠”的过程作为一个Runloop周期,在周期过程中Runloop进行事件的处理和分发。当没有需要处理的事件时,Runloop会进入休眠态,在即将进入休眠态时,Runloop会对外部进行状态通知,此时,终端操作***将检查界面的更新设置,进行必要的界面重绘。
经大量研究,本发明人发现,在主线程的Runloop即将进入休眠态时,Runloop可能还需要进行多种其他事件的处理和分发,这时如果有事件耗时过长,将挤占界面重绘时间,导致重绘中发生渲染掉帧,引发APP运行卡顿。
有鉴于此,本发明提供一种卡顿分析方法和装置,通过对APP特定线程的特定运行模式进行数据监控,实现卡顿的分析,本发明实施例不仅能够用于对界面重绘中的卡顿进行分析,还能够推广用于对APP运行中的各种卡顿情况进行分析,供用户或研发人员据此优化APP架构设计,提升***性能。
在介绍了本发明的基本思想之后,下面具体介绍本发明的各种非限制性实施方式。
示例性方法
下面参考图1来描述根据本发明示例性实施方式的卡顿分析方法。
图1示意性地示出了根据本发明一实施方式的卡顿分析方法实现流程图,包括以下步骤:
S101:在应用程序的运行过程中,记录在特定线程的特定模式下,多个运行循环的运行数据;
S102:基于记录的多个运行循环的运行数据,得到所述应用程序的卡顿情况。
终端应用程序APP启动后,终端操作***开启对应的主线程,在APP运行过程中,随着APP运行状态转换,主线程的运行模式随之转换,还可在主线程中开启子线程处理对应事件。在本发明的一种实施方式中,可记录主线程中的运行相关数据,在另一种实施方式中,也可记录子线程中的运行相关数据。
关于所记录的数据的种类,举例来讲,图2示出了本发明实施例的一种APP主线程中一次视图滚动模式的时序示意图,其中,下方的一个长箭头表示该视图滚动模式由开始至结束,上方的多个短箭头表示该视图滚动模式内部的若干运行循环(或称事件处理循环)Runloop,每个箭头的长度可示意性地表示持续时长。其中,短箭头代表的持续时长是该Runloop的事件处理周期时长,也即该Runloop“从休眠中唤醒”到“即将进入休眠”的周期时长。
在本发明的一种实施方式中,可记录APP主线程在至少一种运行模式(例如图2实施例的视图滚动模式)中多个Runloop的事件处理周期时长的数据,用于卡顿分析。
继续举例,图3示出了本发明实施例的APP主线程在一种预定运行模式中的一次Runloop周期的时序示意图,其中,下方的一个长箭头表示该Runloop的一个周期过程,即前文所述的“从休眠中唤醒”到“即将进入休眠”的过程,也可表述为从结束休眠到再次进入休眠的过程;图3上方的多个短箭头表示该Runloop内部事件处理过程中调用的若干方法单元,如方法A、方法B、方法C,等等。箭头的长度示意性地表示方法的持续时长。
进一步,图3中还以双箭头的形式对不同事件的处理时序进行了示意性划分,例如方法A和方法B用于一般事件处理,方法C和方法D用于界面重绘相关事件的处理,等等。
在本发明的一种实施方式中,可记录主线程在预定运行模式下至少一个Runloop周期(例如图3实施例的发生界面重绘事件的Runloop周期)中所调用的多个方法单元的相关信息,用于卡顿分析。
除此之外,图4示出了本发明另一实施例的APP主线程在一种预定运行模式中的一次Runloop周期的时序示意图,图4与图3实施例的不同之处在于,图4实施例为Runloop处理一般事件的时序示意图,所调用的方法E和方法F中均未发生界面重绘事件,可记录方法E和/或方法F的相关信息,用于卡顿分析。
在本发明的其他实施方式中,还可根据应用需求记录APP运行过程中的其他运行数据,用于卡顿分析。
在本发明的实施例中,基于记录的多个Runloop的运行数据,可得到应用程序的卡顿情况,为***性能优化提供参考。以下通过多种实施方式描述详细的实现过程。
在本发明的一种实施方式中,在记录的多个Runloop的事件处理周期时长中,如果存在至少一个Runloop的事件处理周期时长大于或等于预设阈值,则确定APP出现卡顿。
参考图2,在一次视图滚动模式中的多个Runloop中,有2个Runloop耗时过长,图中以打叉作为标记,这2个Runloop的事件处理周期时长超过了预先设定的周期阈值,认为其耗时超长,从而引发APP出现卡顿。其中,周期阈值可根据实际需求设置,例如20ms等。
在本发明的一种实施方式中,参考图1,卡顿分析方法还包括:
S103,根据事件处理周期时长大于或等于预设阈值的至少一个Runloop的事件处理周期时长以及同一运行模式下的多个Runloop的事件处理周期时长,能够确定APP的卡顿指标值。其中,卡顿指标值用于表征APP的卡顿程度,卡顿指标值越大,意味着APP的卡顿情况越严重,卡顿指标值越小,APP的运行越流畅。
具体地,可根据耗时超长的Runloop的总时长或者总数量,计算所述的卡顿指标值,具体可采取多种计算方式。以下以图2所示的APP主线程一次完整视图滚动模式中的多个Runloop为例,详细描述卡顿指标值的多种计算方式。
第一种计算方式:卡顿指标值为事件处理周期时长大于或等于预设阈值的至少一个Runloop的事件处理周期时长之和与所述多个Runloop的事件处理周期时长之和的比值。
对于图2实施例,卡顿指标值为带有打叉标记的2个超时Runloop的周期时长之和与该次视图滚动模式下的各个Runloop(包含超时Runloop和未超时Runloop)的周期时长之和的比值。Runloop超时时间越长,卡顿指标值越大。
第二种计算方式:卡顿指标值为事件处理周期时长大于或等于预设阈值的至少一个Runloop中发生界面重绘的事件处理周期时长之和与所述多个Runloop中发生界面重绘的事件处理周期时长之和的比值。
与第一种计算方式的不同之处在于,第二种计算方式中卡顿指标值为带有打叉标记的2个超时Runloop(均发生界面重绘)的周期之和与该次视图滚动模式下发生界面重绘的各个Runloop(包含超时Runloop和未超时Runloop)的周期之和的比值。由于影响界面重绘的卡顿是研究者关注的重点之一,因此可以获得涉及界面重绘的Runloop的卡顿指标值更具参加价值。
第三种计算方式:卡顿指标值为事件处理周期时长大于或等于预设阈值的至少一个Runloop的数量与所述多个Runloop的数量的比值。
与第一种计算方式的不同之处在于,第三种计算方式不是基于Runloop的累积时长进行评价,而是基于Runloop的个数进行评价,具体地,假设图2的视图滚动模式中总共包括10个Runloop,其中超时Runloop的数量为2个,其余8个均不超时,则卡顿指标值为2/10=0.2。采用数量累计的计算方式能够反映出引发卡顿的Runloop的分散程度,数量越多分散程度越高。
第四种计算方式:与第二种计算方式类似,考虑发生界面重绘的Runloop数量,卡顿指标值为事件处理周期时长大于或等于预设阈值的至少一个Runloop中发生界面重绘的数量与所述多个Runloop中发生界面重绘的数量的比值。
具体地,假设图2实施例的视图滚动模式中总共包括10个Runloop,其中,有8个Runloop涉及界面重绘,超时且发生界面重绘的Runloop数量为2,则卡顿指标值为2/8=0.25,不涉及界面重绘的Runloop可不予关注。
可以看到,采用上述不同的计算方式得到的卡顿指标值不同,本发明实施例中的卡顿指标值不作为绝对的评价值,而是相对的评价值,实际应用中应在同一种计算方式下评价APP的卡顿程度。
进一步地,如前文提及的,本发明的实施例还可记录APP线程在预定运行模式下一个或多个Runloop周期中所调用的多个方法单元的信息,参考图1,本发明的实施例的卡顿分析方法还包括:
S104,在确定APP出现卡顿之后,可根据超时Runloop所调用的方法单元信息,对卡顿进行定位。这是因为,以影响界面重绘导致的卡顿为例,如果能够确定耗时超长的那些方法单元,进而定位其中影响界面重绘的方法单元,则可确定该方法单元是引发卡顿的原因,应该对该方法单元进行优化。
更进一步地,本发明的实施例为超时Runloop内部调用的至少一个方法单元设置参考指标值,用于确定该方法单元是否引发卡顿。参考指标值包括以下各项中的至少一项:
①方法单元在Runloop中的调用次数;
②方法单元在Runloop中的耗时占比;
③方法单元在Runloop中的总耗时时长。
其中,关于方法单元的调用次数,调用次数越多,越容易引发卡顿。参考图3实施例,Runloop涉及界面重绘,在该Runloop周期中方法A虽然耗时未超过阈值,但方法A被多次调用,有可能影响重绘而引发卡顿。
关于方法单元的耗时占比,耗时占比越大,越容易引发卡顿。在图3实施例中,方法C的耗时占比最大,实际中容易引发卡顿。
关于方法单元的总耗时时长,总耗时越长,越容易引发卡顿。仍是方法C,总耗时时长最长,容易引发卡顿。
经过上述处理,可以定位图3实施例中的方法A和方法C是引发卡顿的主要原因,应当给予优化,减少调用频次或缩短耗时,达到降低卡顿发生概率的目的。
此外,对于图4实施例中的方法单元:方法E和方法F,其中虽然方法E耗时超长,但由于该Runloop周期并不涉及界面重绘事件,因而调用方法E和方法F不会因影响界面重绘而引发卡顿。
图5示意性地示出了本发明一实施例中记录的Runloop运行模式下多个方法单元的耗时,图5中最左侧第一列的各个数字为右侧方法单元的耗时,其中,第9个方法单元的耗时为1473ms,为该实施例中超时的方法单元,应将其方法单元名称和耗时情况报告操作人员,启动对其进行优化。
利用本发明实施例的卡顿分析方法,能够实现对卡顿情况的分析,进一步可获得量化的卡顿指标值、参考指标值等,可定量的评价卡顿严重程度,可基于Runloop周期调用的方法单元的信息,找出引发卡顿的方法单元,实现对卡顿的定位,为***性能优化提供参考。
在本发明实施例的一次卡顿分析应用过程中,可执行以下处理:
1)当主线程的Runloop开始运行在视图滚动模式下时,开始记录有关数据。
2)将新的Runloop周期的开始时刻作为起点,将该过程中运行过的多个方法单元的方法名、运行耗时、调用频次等信息记录到指定的内存数组中。
3)当该Runloop周期即将运行到休眠态前,判断整个Runloop的周期时长是否超过预设阈值且是否发生重绘行为;如果超过预设阈值且发生重绘行为,记录该Runloop的周期时长,将存入指定数组中的数据提取出来,保存到磁盘文件中,其中,可以做必要的去除重复数据的处理,减少存储数据量。
4)视图滚动模式结束后,将记录的超长Runloop周期时长的总和作为分子,该视图滚动模式内的所有Runloop的周期时长的总和作为分母,得出的比值作为该次视图滚动模式中的卡顿指标值,该值越低说明页面滑动越流畅。
5)当APP切换到后台运行状态时,将之前存储在磁盘的历史数据取出,根据所需的筛选方法,找出导致每一个超时Runloop周期中影响重绘行为的方法信息。
6)将卡顿分析结果整理并生成分析日志。
利用本发明实施例的卡顿分析方法,能够以时序同步为前提,以Runloop周期作为划分,分析超时的带有重绘行为的Runloop周期的调用方法单元的占比、频次等信息,进而定位引发卡顿的原因。
示例性介质
在介绍了本发明示例性实施方式的方法之后,接下来,参考图6对本发明示例性实施方式的介质进行说明。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种计算机可读介质,其上存储有程序,当所述程序被处理器执行时用于实现本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的卡顿分析方法中的步骤。
具体地,上述处理器执行上述程序时用于实现如下步骤:
在应用程序的运行过程中,记录在特定线程的特定模式下,多个运行循环的运行数据;
基于记录的多个运行循环的运行数据,得到所述应用程序的卡顿情况。
需要说明的是:上述的介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图6所示,描述了根据本发明的实施方式的介质60,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序,并可以在设备上运行。然而,本发明不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算设备。
示例性装置
在介绍了本发明示例性实施方式的存储介质之后,接下来,参考图7对本发明示例性实施方式的装置进行说明。
如图7所示,本发明实施例的卡顿分析装置可以包括:
运行数据记录模块12,用于在应用程序的运行过程中,记录在特定线程的特定模式下,多个运行循环的运行数据;
卡顿情况分析模块14,用于基于记录的多个运行循环的运行数据,得到所述应用程序的卡顿情况。
在一种可能的实施方式中,所述运行数据包括运行循环的事件处理周期时长。
在一种可能的实施方式中,所述运行数据记录模块12包括:
确定卡顿子模块121,用于在存在至少一个运行循环的事件处理周期时长大于或等于预设阈值的情况下,确定所述应用程序出现卡顿。
在一种可能的实施方式中,所述卡顿分析装置还包括:
第一卡顿指标值确定模块16,用于基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的事件处理周期时长和所述多个运行循环的事件处理周期时长,确定所述应用程序的卡顿指标值。
在一种可能的实施方式中,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的事件处理周期时长之和与所述多个运行循环的事件处理周期时长之和的比值;或者,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中发生界面重绘的运行循环的事件处理周期时长之和与所述多个运行循环中发生界面重绘的运行循环的事件处理周期时长之和的比值。
在一种可能的实施方式中,所述卡顿分析装置还包括:
第二卡顿指标值确定模块18,用于基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的数量和所述多个运行循环的数量,确定所述应用程序的卡顿指标值。
在一种可能的实施方式中,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的数量与所述多个运行循环的数量的比值;或者,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中发生界面重绘的运行循环的数量与所述多个运行循环中发生界面重绘的运行循环的数量的比值。
在一种可能的实施方式中,所述运行数据还包括运行循环对应的方法单元信息,所述方法单元信息包括运行循环中调用的方法单元的信息;所述卡顿分析装置还包括:
卡顿定位模块20,用于在确定所述应用程序出现卡顿之后,基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环对应的方法单元信息,对卡顿进行定位。
在一种可能的实施方式中,其中,所述卡顿定位模块20包括:
参考指标值确定子模块201,用于确定所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中的至少一个方法单元的参考指标值;以及,
卡顿定位分析子模块202,用于根据所述参考指标值确定所述至少一个方法单元是否引发卡顿;
其中,所述参考指标值包括以下各项中的至少一项:方法单元在运行循环中的调用次数、方法单元在运行循环中的耗时占比、方法单元在运行循环中的总耗时时长。
在一种可能的实施方式中,所述方法单元信息包括关于界面重绘的方法单元的信息。
在一种可能的实施方式中,所述特定线程包括所述应用程序的的主线程;和/或,所述特定模式包括以下各种模式中的至少一种模式:初始化模式、缺省模式、视图滚动模式。
示例性计算设备
在介绍了本发明示例性实施方式的方法、存储介质和装置之后,接下来,参考图8对本发明示例性实施方式的计算设备进行说明。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为***、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
在一些可能的实施方式中,根据本发明实施方式的计算设备可以至少包括至少一个处理单元以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明的各种示例性实施方式的卡顿分析方法中的步骤。
下面参照图8来描述根据本发明的这种实施方式的计算设备80。图8显示的计算设备80仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算设备80以通用计算设备的形式表现。计算设备80的组件可以包括但不限于:上述至少一个处理单元801、上述至少一个存储单元802,连接不同***组件(包括处理单元801和存储单元802)的总线803。
总线803包括数据总线、控制总线和地址总线。
存储单元802可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)8021和/或高速缓存存储器8022,可以进一步包括非易失性存储器形式的可读介质,例如只读存储器(ROM)8023。
存储单元802还可以包括具有一组(至少一个)程序模块8024的程序/实用工具8025,这样的程序模块8024包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备80也可以与一个或多个外部设备804(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口805进行。并且,计算设备80还可以通过网络适配器806与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图8所示,网络适配器806通过总线803与计算设备80的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备80使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
应当注意,尽管在上文详细描述中提及了卡顿分析装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (14)
1.一种卡顿分析方法,其特征在于,所述方法包括:
在应用程序的运行过程中,记录在特定线程的特定模式下,所述特定线程的多个运行循环的运行数据;其中,通过在所述特定线程中启动所述多个运行循环实现所述应用程序在所述特定模式下的运行状态;所述特定线程包括所述应用程序的的主线 程;所述特定模式包括以下各种模式中的至少一种模式:初始化模式、缺省模式、视 图滚动模式;
基于记录的多个运行循环的运行数据,得到所述应用程序的卡顿情况,所述运行数据包括运行循环对应的方法单元信息和运行循环的事件处理周期时长,所述方法单元信息包括运行循环中调用的方法单元的信息;
在确定所述应用程序出现卡顿之后,所述方法还包括:基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环对应的方法单元信息,对卡顿进行定位;
所述基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环对应的方法单元信息,对卡顿进行定位,包括:
确定所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中的至少一个方法单元的参考指标值,根据所述参考指标值确定所述至少一个方法单元是否引发卡顿;其中,所述参考指标值包括以下各项中的至少一项:方法单元在运行循环中的调用次数、方法单元在运行循环中的耗时占比、方法单元在运行循环中的总耗时时长,所述方法单元信息包括关于界面重绘的方法单元的信息。
2.根据权利要求1所述的方法,其特征在于,所述基于记录的多个运行循环的运行数据,得到所述应用程序的卡顿情况,包括:
在存在至少一个运行循环的事件处理周期时长大于或等于预设阈值的情况下,确定所述应用程序出现卡顿。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的事件处理周期时长和所述多个运行循环的事件处理周期时长,确定所述应用程序的卡顿指标值。
4.根据权利要求3所述的方法,其特征在于,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的事件处理周期时长之和与所述多个运行循环的事件处理周期时长之和的比值;
或者,
所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中发生界面重绘的运行循环的事件处理周期时长之和与所述多个运行循环中发生界面重绘的运行循环的事件处理周期时长之和的比值。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的数量和所述多个运行循环的数量,确定所述应用程序的卡顿指标值。
6.根据权利要求5所述的方法,其特征在于,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的数量与所述多个运行循环的数量的比值;
或者,
所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中发生界面重绘的运行循环的数量与所述多个运行循环中发生界面重绘的运行循环的数量的比值。
7.一种卡顿分析装置,其特征在于,所述装置包括:
运行数据记录模块,用于在应用程序的运行过程中,记录在特定线程的特定模式下,所述特定线程的多个运行循环的运行数据;其中,通过在所述特定线程中启动所述多个运行循环实现所述应用程序在所述特定模式下的运行状态;
卡顿情况分析模块,用于基于记录的多个运行循环的运行数据,得到所述应用程序的卡顿情况,
所述运行数据还包括运行循环对应的方法单元信息和运行循环的事件处理周期时长,所述方法单元信息包括运行循环中调用的方法单元的信息;所述特定线程包括所述应用程序的主线程;所述特定模式包括以下各种模式中的至少一种模式:初始化模式、缺省模式、视图滚动模式;
所述装置还包括:卡顿定位模块,用于在确定所述应用程序出现卡顿之后,基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环对应的方法单元信息,对卡顿进行定位;
所述卡顿定位模块包括:参考指标值确定子模块,用于确定所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中的至少一个方法单元的参考指标值;以及,卡顿定位分析子模块,用于根据所述参考指标值确定所述至少一个方法单元是否引发卡顿;
其中,所述参考指标值包括以下各项中的至少一项:方法单元在运行循环中的调用次数、方法单元在运行循环中的耗时占比、方法单元在运行循环中的总耗时时长,所述方法单元信息包括关于界面重绘的方法单元的信息。
8.根据权利要求7所述的装置,其特征在于,所述运行数据记录模块包括:
确定卡顿子模块,用于在存在至少一个运行循环的事件处理周期时长大于或等于预设阈值的情况下,确定所述应用程序出现卡顿。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第一卡顿指标值确定模块,用于基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的事件处理周期时长和所述多个运行循环的事件处理周期时长,确定所述应用程序的卡顿指标值。
10.根据权利要求9所述的装置,其特征在于,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的事件处理周期时长之和与所述多个运行循环的事件处理周期时长之和的比值;
或者,
所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中发生界面重绘的运行循环的事件处理周期时长之和与所述多个运行循环中发生界面重绘的运行循环的事件处理周期时长之和的比值。
11.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二卡顿指标值确定模块,用于基于所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的数量和所述多个运行循环的数量,确定所述应用程序的卡顿指标值。
12.根据权利要求11所述的装置,其特征在于,所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环的数量与所述多个运行循环的数量的比值;
或者,
所述卡顿指标值包括所述事件处理周期时长大于或等于预设阈值的至少一个运行循环中发生界面重绘的运行循环的数量与所述多个运行循环中发生界面重绘的运行循环的数量的比值。
13.一种计算机可读存储介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述的卡顿分析方法的步骤。
14.一种计算设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-6中任一项所述的卡顿分析方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911203057.0A CN110990243B (zh) | 2019-11-29 | 2019-11-29 | 卡顿分析方法、装置、存储介质和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911203057.0A CN110990243B (zh) | 2019-11-29 | 2019-11-29 | 卡顿分析方法、装置、存储介质和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990243A CN110990243A (zh) | 2020-04-10 |
CN110990243B true CN110990243B (zh) | 2023-08-11 |
Family
ID=70088540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911203057.0A Active CN110990243B (zh) | 2019-11-29 | 2019-11-29 | 卡顿分析方法、装置、存储介质和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990243B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764959B (zh) * | 2021-01-27 | 2023-05-16 | 抖音视界有限公司 | 应用程序卡死问题的监测方法、装置、设备及存储介质 |
CN113115074B (zh) * | 2021-04-30 | 2022-11-22 | 北京字节跳动网络技术有限公司 | 视频卡顿的处理方法及设备 |
CN114064431A (zh) * | 2021-11-11 | 2022-02-18 | 北京字节跳动网络技术有限公司 | 卡顿检测方法、装置、可读介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677573A (zh) * | 2016-02-26 | 2016-06-15 | 厦门美图移动科技有限公司 | 一种卡顿检测方法、装置及计算设备 |
CN108345524A (zh) * | 2017-01-22 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 应用程序监控方法及应用程序监控装置 |
CN108512695A (zh) * | 2018-03-12 | 2018-09-07 | 腾讯音乐娱乐科技(深圳)有限公司 | 监控应用卡顿的方法及装置 |
CN109324946A (zh) * | 2018-09-10 | 2019-02-12 | 天津字节跳动科技有限公司 | 运行监测方法、装置、电子设备及计算机可读存储介质 |
CN109324977A (zh) * | 2018-10-31 | 2019-02-12 | 北京微播视界科技有限公司 | 应用程序卡顿的检测方法、装置及电子设备 |
CN109902011A (zh) * | 2019-02-28 | 2019-06-18 | 深圳乐信软件技术有限公司 | 一种软件卡顿监测方法、装置、设备和存储介质 |
-
2019
- 2019-11-29 CN CN201911203057.0A patent/CN110990243B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677573A (zh) * | 2016-02-26 | 2016-06-15 | 厦门美图移动科技有限公司 | 一种卡顿检测方法、装置及计算设备 |
CN108345524A (zh) * | 2017-01-22 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 应用程序监控方法及应用程序监控装置 |
CN108512695A (zh) * | 2018-03-12 | 2018-09-07 | 腾讯音乐娱乐科技(深圳)有限公司 | 监控应用卡顿的方法及装置 |
CN109324946A (zh) * | 2018-09-10 | 2019-02-12 | 天津字节跳动科技有限公司 | 运行监测方法、装置、电子设备及计算机可读存储介质 |
CN109324977A (zh) * | 2018-10-31 | 2019-02-12 | 北京微播视界科技有限公司 | 应用程序卡顿的检测方法、装置及电子设备 |
CN109902011A (zh) * | 2019-02-28 | 2019-06-18 | 深圳乐信软件技术有限公司 | 一种软件卡顿监测方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110990243A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110990243B (zh) | 卡顿分析方法、装置、存储介质和计算设备 | |
US8516462B2 (en) | Method and apparatus for managing a stack | |
JP5520371B2 (ja) | 多重仮想マシンのためのサポートを有する、トレース・データの時間ベース・コンテキスト・サンプリング | |
US20120284543A1 (en) | User input triggered device power management | |
KR100972723B1 (ko) | 프로액티브 메모리 관리를 위한 컴퓨터 실행 방법, 컴퓨터 판독가능 기록 매체, 및 컴퓨터 판독가능 저장 매체 | |
US20040225902A1 (en) | Method and apparatus for dynamic power management in a processor system | |
US9280438B2 (en) | Autonomic hotspot profiling using paired performance sampling | |
EP3040804B1 (en) | Electronic device for controlling power and method therefor | |
US9026862B2 (en) | Performance monitoring for applications without explicit instrumentation | |
US20100017583A1 (en) | Call Stack Sampling for a Multi-Processor System | |
JP5763907B2 (ja) | ロック・トレーシング機能を有する情報処理システム | |
WO1993002416A1 (en) | System bus monitor for compiling data regarding use of a system bus | |
US11171852B2 (en) | Computer system productivity monitoring | |
CN105574141B (zh) | 一种对数据库进行数据迁移的方法和装置 | |
US9372734B2 (en) | Outage window scheduler tool | |
CN107045475B (zh) | 测试方法和装置 | |
JP2009110156A (ja) | ログ出力装置及びログ出力プログラム | |
CN106844182B (zh) | 用于记录用户行为的方法、***及移动终端 | |
CN112711387A (zh) | 缓冲区容量的调整方法、装置、电子设备及可读存储介质 | |
CN108415765B (zh) | 任务调度方法、装置及智能终端 | |
CN113687942B (zh) | 检测方法、装置及电子设备 | |
EP2691858B1 (en) | Timeframe based data analysis | |
US8024301B2 (en) | Automatic database diagnostic usage models | |
JP2011118596A (ja) | 情報処理装置およびプロファイリング方法 | |
US20170168833A1 (en) | Instruction weighting for performance profiling in a group dispatch processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |