一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种应用程序性能分析方法、系统、装置及存储介质与流程

2022-08-02 20:23:02 来源:中国专利 TAG:


1.本技术涉及软件测试技术领域,具体涉及一种应用程序性能分析方法、系统、装置及存储介质。


背景技术:

2.随着互联网的不断发展,为满足用户不同领域、不同问题的应用需求,各种类型的应用程序(app application)层出不穷,为了提升应用程序的可靠性,改善用户体验,有必要在应用程序投入使用之前或投入使用后定期对其进行性能检测及分析,以确定应用程序的性能相关问题并针对性优化,提升应用程序的可靠性,将高质量的应用程序交给用户。
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.数据解析指令发送模块,用于向本地服务器发送数据解析指令,所述数据解析指令携带有所述待解析检测数据;以使所述本地服务器响应于所述数据解析指令创建多个数据解析线程,以及对所述待解析检测数据进行数据切片,得到所述待解析检测数据的多个检测数据块;以及分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成所述对应的检测数据块对应的解析结果块;以及基于所述多个检测数据块对应的解析结果块生成所述目标应用程序的性能分析结果数据。
34.本技术另一方面提供了一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现上述的应用程序性能分析方法。
35.本技术另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现上述的应用程序性能分析方法。
36.本技术提供的应用程序性能分析方法、系统、装置及存储介质,具有如下技术效果:
37.本技术中响应于性能检测指令,客户端执行对目标应用程序的模拟操作,生成目标应用程序的运行数据;响应于性能分析指令,客户端对运行数据进行数据处理,得到待解析检测数据;客户端向本地服务器发送携带有待解析检测数据的数据解析指令;然后,响应于数据解析指令,本地服务器创建多个数据解析线程,对待解析检测数据进行数据切片,得到待解析检测数据的多个检测数据块,然后分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,再生成目标应用程序的性能分析结果数据,能够减少客户端的性能压力,且大大提升应用程序性能分析的效率和灵活性。
38.本技术的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
39.为了更清楚地说明本技术实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
40.图1是本技术实施例提供的一种应用环境的示意图;
41.图2是本技术实施例提供的一种应用程序性能分析方法的流程图;
42.图3是本技术实施例提供的另一种应用程序性能分析方法的流程图;
43.图4是本技术实施例提供的另一种应用程序性能分析方法的流程图;
44.图5是本技术实施例提供的另一种应用程序性能分析方法的流程图;
45.图6是本技术实施例提供的另一种应用程序性能分析方法的流程图;
46.图7是本技术实施例提供的另一种应用程序性能分析方法的流程图;
47.图8是本技术实施例提供的应用程序性能分析系统的一种实施例的结构示意图;
48.图9是本技术实施例提供的一种应用程序性能分析装置示意图;
49.图10是本技术实施例提供的另一种应用程序性能分析装置示意图;
50.图11是本技术实施例提供的一种应用程序性能分析的服务器的硬件结构框图。
具体实施方式
51.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。
52.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
53.请参阅图1,图1是本技术实施例提供的一种应用环境的示意图,如图1所示,该应用环境可以包括客户端01和本地服务器02。
54.在本技术实施例中,需要进行性能检测的目标应用程序可以运行在客户端01上,客户端01可以用于响应于性能检测指令,执行对该目标应用程序的模拟操作,生成该目标应用程序的运行数据;然后,响应于性能分析指令,对上述的运行数据进行数据处理,得到待解析检测数据,再向本地服务器02发送携带有该待解析检测数据的数据解析指令,以使本地服务器02进行后续的数据解析,得到该目标应用程序的性能分析结果数据。具体地,客户端01可以包括处理器和存储器,其中,处理器可以用于例如接收指令和处理数据等,存储器可以用于存储该目标应用程序的运行数据等。在具体的实施例中,客户端01可以包括台式计算机、笔记本电脑、平板电脑、智能手机、智能音箱、智能可穿戴设备(如智能手表)等类型的实体设备,但并不局限于此。
55.在本技术实施例中,本地服务器02可以用于响应于客户端01发送的携带有待解析检测数据的数据解析指令,创建多个数据解析线程,并对该待解析检测数据进行数据切片,得到该待解析检测数据的多个检测数据块;进而能够分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,根据多个解析结果块生成性能分析结果数据,提升应用程序性能分析的效率和灵活性。本地服务器02可以包括有网络通信单元、处理器和存储器等等。在本说明书实施例中,本地服务器02可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。
56.请参照图1,在实际应用中,客户端01响应于性能检测指令,执行对目标应用程序的模拟操作,生成该目标应用程序的运行数据;然后,响应于性能分析指令,客户端01对上述的运行数据进行数据处理,得到待解析检测数据;接着,客户端01可以向本地服务器02发送携带有该待解析检测数据的数据解析指令,本地服务器02能够响应于该数据解析指令创建多个数据解析线程,然后对该待解析检测数据进行数据切片,得到该待解析检测数据的多个检测数据块;进而本地服务器02可以分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成上述对应的检测数据块对应的解析结果块;最后,本地服务器02可以基于上述的多个检测数据块对应的解析结果块生成该目标应用程序的性能分析结果数据。
57.此外,需要说明的是,图1仅仅是本技术实施例提供的一种应用环境的示意图,在一个实施例中,该应用环境还可以包括云端服务器,云端服务器可以用于存储目标应用程序的数据映射文件,该数据映射文件可以表征原始代码与加密代码间的映射关系;由于在对目标应用程序进行编译时可以对原始代码进行加密处理以提升安全性,在本地服务器02进行数据解析,得到解析结果块时还可以从云端服务器获取对应的数据映射文件以对加密数据进行解密处理,生成性能分析报告;本技术并不以此为限。
58.图2是本技术实施例提供的一种应用程序性能分析方法的流程图,请参照图2,本说明书实施例提供的应用程序性能分析方法包括如下步骤:
59.s201:响应于性能检测指令,客户端执行对目标应用程序的模拟操作,生成该目标应用程序的运行数据。
60.在本技术实施例中,该目标应用程序可以表征需要进行性能检测的应用程序,具体地,该目标应用可以为例如咨询类应用程序、购物类应用程序或视频播放类应用程序;在实际应用中,可以在该目标应用程序投入使用之前对该目标应用程序进行性能检测进而进行性能分析,进而根据性能分析结果对该目标应用程序进行优化,提升目标应用程序的可靠性,改善用户体验;也可以在该目标应用程序每次版本更新之后进行性能检测进而进行性能分析,或投入使用后定期进行性能检测进而进行性能分析,以及时进行性能问题优化,保证应用程序运行的稳定性。
61.具体地,该性能检测指令可以为测试人员结合实际性能检测需求发出的,可以为每次检测到目标应用程序进行了更新后自动发出,进而自动实现应用程序的闭环优化,能够提升应用程序性能分析及优化的自动化程度和灵活性,本技术并不以此为限。
62.请参照图3,具体地,上述的响应于性能检测指令,客户端执行对目标应用程序的模拟操作,生成该目标应用程序的运行数据可以包括:
63.s301:响应于该性能检测指令,客户端生成模拟操作指令集。
64.具体地,该模拟操作指令集可以包括多个针对性操作指令和多个随机操作指令,其中,上述的针对性操作指令为有目的的操作指令,可以用于针对该目标应用程序中的预设功能点进行检测,上述的随机操作指令为无目的的操作指令;在实际应用中,客户端可以获取预设性能检测需求文件生成上述的多个针对性操作指令,该预设性能检测需求文件可以为结合该目标应用程序的特性以及性能检测需求(或性能检测历史数据)生成的,其中可以包括发生性能问题概率较高的操作信息;也可以调用预设针对性操作模拟插件生成上述的多个针对性操作指令,本技术并不以此为限;客户端也可以调用预设随机操作生成插件
生成上述的多个随机操作指令。
65.通过客户端响应于该性能检测指令生成模拟操作指令集,且该模拟操作指令集可以包括多个针对性操作指令和多个随机操作指令,能够对较为重要的操作或功能(例如一旦发生性能问题则影响较大或在历史测试中易发生性能问题的操作)进行针对性检测,同时能够利用大量的随机操作指令对该目标应用程序进行随机检测,有利于提升应用程序性能检测的全面性和可靠性,进而提升应用程序性能分析的可靠性。
66.s303:客户端根据该模拟操作指令集执行对目标应用程序的模拟操作,生成该目标应用程序的运行数据。
67.具体地,该目标应用程序的运行数据可以包括但不限于该目标应用程序的运行日志信息和内存信息。
68.在本技术实施例中,客户端可以对该模拟操作指令集进行解析,进而执行对目标应用程序的模拟操作,生成该目标应用程序的运行数据。通过客户端响应于性能检测指令,客户端执行对目标应用程序的模拟操作,生成该目标应用程序的运行数据,大大提升了应用程序性能检测分析的自动化程度,节省了大量的时间和人力资源。
69.s203:响应于性能分析指令,客户端对上述的运行数据进行数据处理,得到待解析检测数据。
70.在一个实施例中,当上述的性能分析指令包括方法耗时分析指令时,该方法耗时的分析指令可以为测试人员结合该目标应用程序的性能分析需求发出的,该方法耗时的分析指令也可以为客户端或本地服务器每隔预设时间自动发出的(例如每天的预设时间点发出,以结合当天产生的运行数据进行性能分析),本技术并不以此为限;当上述的性能分析指令包括方法耗时分析指令时,该方法耗时分析指令可以携带有性能分析需求信息,该性能分析需求信息可以包括需要分析的数据时间信息;上述的客户端对上述的运行数据进行数据处理,得到待解析检测数据可以包括:
71.1)客户端根据上述的性能分析需求信息对上述的运行数据中的运行日志信息进行信息截取,得到目标运行日志信息;
72.具体地,客户端可以根据上述的性能分析需求信息对上述的运行数据中的运行日志信息进行信息截取,得到目标运行日志信息,例如该性能分析需求信息可以包括需要分析的数据的日期,客户端可以从上述的运行日志信息中截取该日期对应的日志信息,并将该日期对应的日志信息作为上述的目标运行日志信息。
73.2)客户端将该目标运行日志信息作为上述的待解析检测数据。
74.当上述的性能分析指令包括方法耗时分析指令时,通过客户端根据上述的性能分析需求信息对上述的运行数据中的运行日志信息进行信息截取,得到目标运行日志信息,将该目标运行日志信息作为上述的待解析检测数据,能够灵活地获取需要的运行日志信息进行性能分析,提升应用程序性能分析的灵活性;且能够去除无关数据的干扰,提升应用程序性能分析的效率。
75.在另一个实施例中,上述的性能分析指令可以包括内存泄漏分析指令;内存泄漏是指应用程序中已经为对象分配的内存在应该被释放时未能被释放,即该对象会异常持有该内存,造成系统内存的浪费,进而会导致应用程序运行速度下降甚至系统崩溃,大大影响应用程序性能,因此有必要进行内存泄漏分析。当上述的性能分析指令包括内存泄漏分析
指令,该内存泄漏分析指令可以为客户端检测到发生内存泄漏时发出的,具体地,在客户端执行对目标应用程序的模拟操作的过程中,可以对多个对象进行内存泄漏监控,将当存在对象发生内存泄漏时,发出上述的内存泄漏分析指令,具体可以利用弱引用将应释放内存的对象加入弱引用列表,内存回收后若列表中对象个数为0,表示列表中对象均可正常进行内存释放,内存回收后若列表中对象个数大于0,表示列表中存在对象无法进行内存释放,发生内存泄漏。
76.请参照图4,上述的响应于性能分析指令,客户端对上述的运行数据进行数据处理,得到待解析检测数据可以包括:
77.s401:响应于上述的性能分析指令,客户端创建内存截取进程。
78.在现有技术中,客户端会直接在当前进程中(目标应用程序的运行进程中)进行内存截取,为了提升获取的发生内存泄漏时目标应用程序的内存信息的准确性,客户端在当前进程中进行内存截取时会对目标应用程序进行冻结,造成应用程序卡顿,降低应用程序性能分析效率;在本技术实施例中,响应于上述的性能分析指令,客户端可以利用分叉函数创建内存截取进程以进行内存截取,原本的进程可以持续不断地执行目标应用程序的模拟操作,避免目标应用程序卡顿或崩溃和重启,而无法成功获取应用程序内存信息,造成分析数据丢失的情况,有利于提升应用程序性能分析的效率和可靠性,改善用户体验。
79.s403:客户端在该内存截取进程中截取该目标应用程序的目标内存信息;
80.具体地,上述的目标内存信息可以表征客户端检测到发生内存泄漏时系统的内存情况,上述的目标内存信息具体可以包括各对象的路径信息以及内存分配情况等,通过在该内存截取进程中截取该目标应用程序的目标内存信息该目标应用程序的目标内存信息,能够灵活高效地实现内存信息的获取,提升应用程序性能分析的效率。
81.s405:客户端将上述的目标内存信息作为上述的待解析检测数据。
82.客户端在该内存截取进程中截取该目标应用程序的目标内存信息之后,可以将上述的目标内存信息作为上述的待解析检测数据,后续可以发送至服务器进行性能数据分析。
83.s205:客户端向本地服务器发送数据解析指令。
84.具体地,该数据解析指令携带有上述的待解析检测数据;客户端对上述的运行数据进行数据处理,得到待解析检测数据之后,可以向本地服务器发送携带有上述的待解析检测数据的数据解析指令,以使本地服务器创建多个数据解析线程进行数据解析,避免客户端数据解析带来的卡顿和占用内存对应用程序性能分析的效率和可靠性的影响,提升应用程序性能分析的效率的同时改善用户体验。
85.s207:响应于该数据解析指令,本地服务器创建多个数据解析线程。
86.在本技术实施例中,本地服务器创建的数据解析线程数量可以根据实际应用需求进行设定,例如,5个;本地服务器也可以确定上述待解析检测数据的数据量,然后根据上述待解析检测数据的数据量和预设的数据量线程映射关系,创建与上述待解析检测数据的数据量对应的数据解析线程数量,以进行后续的性能数据解析,其中,预设的数据量线程映射关系可以结合大量的性能数据解析时间和结果确定;合理灵活地创建数据处理线程,避免资源浪费,提升本地服务器的性能,本地服务器创建多个数据解析线程以进行后续的数据解析,有利于提升性能数据分析的效率和灵活性。
87.s209:本地服务器对上述的待解析检测数据进行数据切片,得到上述的待解析检测数据的多个检测数据块。
88.在本技术实施例中,本地服务器可以根据创建的数据解析线程数量对上述的待解析检测数据进行数据切片,得到与创建的数据解析线程数量一致的多个检测数据块;也可以利用上述创建的多个数据解析线程对上述的待解析检测数据进行数据分块读取,以实现数据切片,得到上述的待解析检测数据的多个检测数据块,提升性能数据分析的灵活性。
89.s211:本地服务器分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成上述对应的检测数据块对应的解析结果块。
90.在本技术实施例中,本地服务器在对上述的待解析检测数据进行数据切片,得到上述的待解析检测数据的多个检测数据块之后,可以将这多个检测数据块均匀分配到创建的多个数据解析线程进行处理,使得每个数据解析线程分配到不同的检测数据块进行性能数据解析,提升性能数据解析的效率和灵活性;具体的,可以分别在每个数据解析线程中对一个检测数据块进行性能数据解析,也可以分别在每个数据解析线程中对两个及以上的检测数据块进行性能数据解析,本技术并不以此为限。
91.由于当该性能分析指令包括内存泄漏分析指令时,上述的待解析检测数据可以包括目标内存信息,上述的目标内存信息可以表征客户端检测到发生内存泄漏时系统的内存情况,上述的目标内存信息具体可以包括各对象的路径信息以及内存分配情况等,此时上述的待解析检测数据的多个检测数据块可以包括该目标内存信息的多个内存切片;请参照图5,上述本地服务器分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成上述对应的检测数据块对应的解析结果块可以包括:
92.s501:本地服务器分别在每个数据解析线程中对对应的内存切片进行内存泄漏对象的查找,得到内存泄漏对象的关联信息。
93.在本技术实施例中,一个内存泄漏对象的关联信息可以包括但不限于该内存泄漏对象的对象标识信息、gc路径信息、调用方法函数信息和占用空间信息;在实际应用中,可以利用弱引用回收时的泄漏标记(如该对象的逻辑地址)进行内存泄漏对象的查找;通过对对应的内存切片进行内存泄漏对象的查找,得到内存泄漏对象的关联信息,有利于灵活高效地得到全面的内存泄漏对象的相关信息,进而能够生成该目标应用程序的性能分析结果数据,方便后续对该目标应用程序进行针对性优化,且本地服务器分别在每个数据解析线程中对对应的内存切片进行内存泄漏对象的查找,大大提升应用程序性能分析的效率和灵活性。
94.s503:本地服务器将上述的关联信息作为该对应的内存切片对应的解析结果块。
95.在本地服务器分别在每个数据解析线程中对对应的内存切片进行内存泄漏对象的查找,得到内存泄漏对象的关联信息之后,可以将上述的关联信息作为该对应的内存切片对应的解析结果块;在本技术实施例中,在本地服务器将上述的关联信息作为该对应的内存切片对应的解析结果块之前,本地服务器还可以对上述的关联信息进行精简化处理,具体地,本地服务器可以根据预设分析需求确定基本类型对象不搜索不解析,以及对gc路径信息进行精简处理(如干扰信息的去除)、针对重复对象仅获取一次关联信息、缓存每个类的递归基类减少重复计算等,通过本地服务器对上述的关联信息进行精简化处理,有利于避免无关数据的干扰,提升应用程序性能分析的效率。
96.在本技术实施例中,当该性能分析指令包括方法耗时分析指令,上述的待解析检测数据包括目标运行日志信息,上述的待解析检测数据的多个检测数据块包括所述目标运行日志信息的多个日志切片;请参照图6,上述本地服务器分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成上述对应的检测数据块对应的解析结果块可以包括:
97.s601:本地服务器分别在每个数据解析线程中查找对应的日志切片中的每个方法对应的方法出入标记对。
98.具体地,上述的方法出入标记对可以表征对应的方法的起始信息和结束信息;可以预先根据方法标记规则自动进行方法识别和标记,生成各方法对应的方法出入标记对,避免人工标注耗时费力且准确性不高的问题,进而在进行应用程序性能分析时有利于迅速准确地得到各方法的消耗时长,提升应用程序性能分析的效率和可靠性。
99.s603:本地服务器根据上述每个方法对应的方法出入标记对计算上述每个方法的消耗时长。
100.由于上述的方法出入标记对可以表征对应的方法的起始信息和结束信息,本地服务器可以根据上述每个方法对应的方法出入标记对作差,从而迅速准确地得到上述每个方法的消耗时长。
101.s605:本地服务器确定上述的消耗时长大于或等于预设阈值的方法。
102.具体地,上述的预设阈值可以结合目标应用程序的实际性能分析需求进行设定,或结合历史性能分析结果进行归纳确定,通过合理调整上述的预设阈值,能够减少方法耗时误报的概率,提升应用程序性能分析的可靠性。
103.s607:本地服务器根据上述消耗时长大于或等于预设阈值的方法生成该对应的日志切片对应的解析结果块。
104.在本技术实施例中,本地服务器可以根据上述消耗时长大于或等于预设阈值的方法进行信息汇总,生成该对应的日志切片对应的解析结果块。
105.当该性能分析指令包括方法耗时分析指令,通过本地服务器分别在每个数据解析线程中查找对应的日志切片中的每个方法对应的方法出入标记对,来计算每个方法的消耗时长,进而确定消耗时长大于或等于预设阈值的方法,生成该对应的日志切片对应的解析结果块,能够灵活高效地定位高耗时方法,且通过多线程分析能够提升应用程序性能分析的效率。
106.s213:本地服务器基于上述的多个检测数据块对应的解析结果块生成该目标应用程序的性能分析结果数据。
107.在本地服务器分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成上述对应的检测数据块对应的解析结果块之后,可以基于上述的多个检测数据块对应的解析结果块进行汇总分析,生成该目标应用程序的性能分析结果数据。
108.请参照图7,由于当该性能分析指令包括内存泄漏分析指令时,上述的待解析检测数据可以包括目标内存信息,此时上述的待解析检测数据的多个检测数据块可以包括该目标内存信息的多个内存切片;上述本地服务器分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成上述对应的检测数据块对应的解析结果块可以包括步骤s501~s503,此时上述的本地服务器基于上述的多个检测数据块对应的解析结果块生成该目标
应用程序的性能分析结果数据可以包括:
109.s701:本地服务器根据上述多个内存切片对应的关联信息进行相似对象聚类,得到至少一个相似对象类。
110.在本技术实施例中,本地服务器根据上述多个内存切片对应的关联信息进行相似对象聚类,得到至少一个相似对象类可以包括:本地服务器根据预设相似对象聚类规则对上述多个内存切片对应内存泄漏对象的关联信息进行聚类,得到至少一个相似对象类;上述的预设相似对象聚类规则可以结合实际应用程序性能分析需求进行设定,例如,上述的预设相似对象聚类规则可以包括:当检测到存在多于一个内存泄漏对象的关联信息中的调用方法函数信息的底层函数一致时,将这多于一个内存泄漏对象的关联信息作为一个相似对象类;在其他的实施例中,上述的预设相似对象聚类规则可以包括:当检测到存在多于一个内存泄漏对象的关联信息中的调用方法函数信息的有至少两个函数一致时,将这多于一个内存泄漏对象的关联信息作为一个相似对象类,本技术并不以此为限。通过本地服务器根据上述多个内存切片对应的关联信息进行相似对象聚类,得到至少一个相似对象类,能够合理灵活地整合上述多个内存切片对应的关联信息,提升应用程序分析结果的合理可靠性,进而后续能够清晰合理地优化目标应用程序的性能(例如根据每个相似对象类的数量确定优先优化的方法函数,数量越多则说明该方法涉及的对象多,影响较大,可以优先进行优化减少损失)。
111.s703:本地服务器根据每个相似对象类生成对应的内存泄漏告警信息。
112.在本技术实施例中,上述的内存泄漏告警信息可以表征对应的相似对象类的内存泄漏综合情况,具体地,每个相似对象类生成对应的内存泄漏告警信息可以包括但不限于该相似对象类中各内存泄漏对象的对象标识信息、gc路径信息、调用方法函数信息和占用空间信息;在本技术实施例中,本地服务器可以根据每个相似对象类生成对应的内存泄漏告警信息,进而有利于生成清晰合理的性能分析结果数据,方便后续准确高效地对该目标应用程序进行问题定位排查及针对性优化,提升优化效率。
113.在本技术实施例中,本地服务器在根据每个相似对象类生成对应的内存泄漏告警信息时,还可以获取业务关键信息,结合实际应用程序性能分析需求从上述的业务关键信息中提取目标关键信息加入内存泄漏告警信息中,具体地,业务关键信息可以包括但不限于目标应用程序的版本号、测试客户端型号、问题发生时间等,目标关键信息可以为上述业务关键信息中的部分或全部信息;通过获取业务关键信息,从上述的业务关键信息中提取目标关键信息加入内存泄漏告警信息中,有利于得到更加清晰合理的内存泄漏告警信息,进而后续可以结合告警信息准确高效地进行性能问题定位及优化,提升应用程序性能分析的灵活性和可靠性。
114.s705:本地服务器将上述的至少一个相似对象类对应的内存泄漏告警信息作为该目标应用程序的性能分析结果数据。
115.本地服务器根据每个相似对象类生成对应的内存泄漏告警信息之后,可以将上述的至少一个相似对象类对应的内存泄漏告警信息作为该目标应用程序的性能分析结果数据,生成清晰合理的性能分析结果数据,且本地服务器可以发送该目标应用程序的性能分析结果数据至开发人员的结果接收客户端(例如开发人员的个人pc),并在开发人员的结果接收客户端展示该目标应用程序的性能分析结果数据,进而方便后续准确高效地对该目标
应用程序进行问题定位排查及针对性优化,减少时间和人力资源的消耗,改善用户体验。
116.当该性能分析指令包括方法耗时分析指令,可以汇总各日志切片对应的解析结果块,生成该目标应用程序的性能分析结果数据。
117.在实际应用中,由于多次进行应用程序性能分析时可能存在一些重复问题,本地服务器可以对上述的多个检测数据块进行存储,当存储的数据量达到预设数据量阈值或每隔预设时间周期基于存储的多个检测数据块对应的解析结果块生成该目标应用程序的性能分析结果数据,例如可以进行相似对象聚类和数据去重等,其中,上述的预设数据量阈值和预设时间周期可以结合实际应用需求进行确定,例如每天20:00根据存储的当天产生的数据生成该目标应用程序的性能分析结果数据;提升应用程序性能分析的效率和灵活性。在一些实施例中,还可以从该目标应用程序的性能分析结果数据确定目标关键数据,例如大图(占用内存超过预设内存阈值的bitmap对象),能够快速准确地优先查找关键数据(如占用内存较高的大图)并针对性优化,提升应用程序性能分析的灵活性。
118.在本技术实施例中,若本地服务器分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成上述对应的检测数据块对应的解析结果块时解析失败,可以自动开启重试,避免应用程序性能分析数据丢失,提升应用程序性能分析的可靠性。
119.在本技术实施例中,可以根据该目标应用程序的性能分析结果数据对该目标应用程序进行性能问题优化,得到更新后的目标应用程序,然后,再次发出性能检测指令,客户端执行对更新后的目标应用程序的模拟操作,继续进行应用程序性能分析,进而自动实现应用程序的闭环优化,持续优化目标应用程序的性能,提升应用程序性能分析及优化的自动化程度和灵活性,改善用户体验。
120.在一个实施例中,由于在对目标应用程序进行编译时可以对原始代码进行加密处理以提升安全性,每次加密处理的同时可以生成数据映射文件以便后续进行解密处理,该数据映射文件可以表征原始代码与加密代码间的映射关系;可以将目标应用程序编译得到的sdk(software development kit软件开发工具包)和对应的数据映射文件存储于云端服务器,在本地服务器进行数据切片解析,得到各解析结果块时,还可以从云端服务器获取对应的数据映射文件以对加密数据进行解密处理,生成该目标应用程序的性能分析结果数据,提升数据安全性。
121.在本说明书实施例中,通过响应于性能检测指令,客户端执行对目标应用程序的模拟操作,生成目标应用程序的运行数据,大大提升了应用程序性能检测分析的自动化程度,节省了大量的时间和人力资源;然后,响应于性能分析指令,客户端对运行数据进行数据处理,得到待解析检测数据;客户端向本地服务器发送携带有待解析检测数据的数据解析指令;然后,响应于数据解析指令,本地服务器创建多个数据解析线程,对待解析检测数据进行数据切片,得到待解析检测数据的多个检测数据块,然后分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,再生成目标应用程序的性能分析结果数据,能够减少客户端的性能压力,且大大提升应用程序性能分析的效率和灵活性。当上述的性能分析指令可以包括内存泄漏分析指令,上述的响应于性能分析指令,客户端对上述的运行数据进行数据处理,得到待解析检测数据可以包括响应于上述的性能分析指令,客户端创建内存截取进程,在该内存截取进程中截取该目标应用程序的目标内存信息,客户端将上述的目标内存信息作为上述的待解析检测数据,通过在该内存截取进程中截取该目标应用
程序的目标内存信息该目标应用程序的目标内存信息,能够灵活高效地实现内存信息的获取,提升应用程序性能分析的效率。通过本地服务器根据上述多个内存切片对应的关联信息进行相似对象聚类,得到至少一个相似对象类,根据每个相似对象类生成对应的内存泄漏告警信息,进而本地服务器将上述的至少一个相似对象类对应的内存泄漏告警信息作为该目标应用程序的性能分析结果数据,有利于生成清晰合理的性能分析结果数据,方便后续准确高效地对该目标应用程序进行问题定位排查及针对性优化,减少时间和人力资源的消耗,改善用户体验。
122.本技术实施例还提供了一种应用程序性能分析系统的实施例,如图8所示,所述系统可以包括:
123.客户端810和本地服务器820;
124.客户端810用于响应于性能检测指令,执行对目标应用程序的模拟操作,生成所述目标应用程序的运行数据;以及响应于性能分析指令,对所述运行数据进行数据处理,得到待解析检测数据;以及向本地服务器发送数据解析指令,所述数据解析指令携带有所述待解析检测数据;
125.本地服务器820用于响应于所述数据解析指令,创建多个数据解析线程;以及对所述待解析检测数据进行数据切片,得到所述待解析检测数据的多个检测数据块;以及分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成所述对应的检测数据块对应的解析结果块;以及基于所述多个检测数据块对应的解析结果块生成所述目标应用程序的性能分析结果数据。
126.本技术实施例还提供了一种应用程序性能分析装置,如图9所示,所述装置可以包括:
127.线程创建模块910,用于响应于客户端发送的数据解析指令,创建多个数据解析线程,所述数据解析指令携带有待解析检测数据,所述待解析检测数据为所述客户端响应于性能分析指令对目标应用程序的运行数据进行数据处理得到的,所述运行数据为所述客户端响应于性能检测指令,执行对所述目标应用程序的模拟操作生成的;
128.数据切片模块920,用于对所述待解析检测数据进行数据切片,得到所述待解析检测数据的多个检测数据块;
129.数据解析模块930,用于分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成所述对应的检测数据块对应的解析结果块;
130.结果数据生成模块940,用于基于所述多个检测数据块对应的解析结果块生成所述目标应用程序的性能分析结果数据。
131.在一个实施例中,当所述性能分析指令包括内存泄漏分析指令,所述待解析检测数据包括目标内存信息,所述待解析检测数据的多个检测数据块包括所述目标内存信息的多个内存切片;上述的数据解析模块930可以包括:
132.关联信息确定单元,用于分别在每个数据解析线程中对对应的内存切片进行内存泄漏对象的查找,得到内存泄漏对象的关联信息;
133.第一解析结果确定单元,用于将所述关联信息作为所述对应的内存切片对应的解析结果块;
134.且上述的结果数据生成模块940可以包括:
135.相似对象聚类单元,用于根据所述多个内存切片对应的关联信息进行相似对象聚类,得到至少一个相似对象类;
136.内存泄漏告警信息生成单元,用于根据每个相似对象类生成对应的内存泄漏告警信息;
137.性能分析结果数据确定单元,用于将所述至少一个相似对象类对应的内存泄漏告警信息作为所述目标应用程序的性能分析结果数据。
138.在另一个实施例中,当所述性能分析指令包括方法耗时分析指令,所述待解析检测数据包括目标运行日志信息,所述待解析检测数据的多个检测数据块包括所述目标运行日志信息的多个日志切片;上述的数据解析模块930可以包括:
139.数据查找单元,用于分别在每个数据解析线程中查找对应的日志切片中的每个方法对应的方法出入标记对,所述方法出入标记对表征对应的方法的起始信息和结束信息;
140.方法消耗时长计算单元,用于根据所述每个方法对应的方法出入标记对计算所述每个方法的消耗时长;
141.方法确定单元,用于确定所述消耗时长大于或等于预设阈值的方法;
142.第二解析结果确定单元,用于根据所述消耗时长大于或等于预设阈值的方法生成所述对应的日志切片对应的解析结果块。
143.本技术实施例还提供了另一种应用程序性能分析装置,如图10所示,所述装置可以包括:
144.性能检测模块1010,用于响应于性能检测指令,执行对目标应用程序的模拟操作,生成所述目标应用程序的运行数据;
145.运行数据处理模块1020,用于响应于性能分析指令,对所述运行数据进行数据处理,得到待解析检测数据;
146.数据解析指令发送模块1030,用于向本地服务器发送数据解析指令,所述数据解析指令携带有所述待解析检测数据;以使所述本地服务器响应于所述数据解析指令创建多个数据解析线程,以及对所述待解析检测数据进行数据切片,得到所述待解析检测数据的多个检测数据块;以及分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,生成所述对应的检测数据块对应的解析结果块;以及基于所述多个检测数据块对应的解析结果块生成所述目标应用程序的性能分析结果数据。
147.在一个实施例中,当所述性能分析指令包括内存泄漏分析指令,所述运行数据处理模块1020可以包括:
148.内存截取进程创建单元,用于响应于所述性能分析指令,创建内存截取进程;
149.内存截取单元,用于在所述内存截取进程中截取所述目标应用程序的目标内存信息;
150.待解析检测数据确定单元,用于将所述目标内存信息作为所述待解析检测数据。
151.所述的装置实施例中的装置与方法实施例基于同样地申请构思。
152.本技术实施例提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的应用程序性能分析方法。
153.存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序
以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
154.本技术实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行,即上述计算机设备可以包括移动终端、计算机终端、服务器或者类似的运算装置。以运行在服务器上为例,图11是本技术实施例提供的一种应用程序性能分析方法的服务器的硬件结构框图。如图11所示,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)1110(处理器1110可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器1130,一个或一个以上存储应用程序1123或数据1122的存储介质1120(例如一个或一个以上海量存储设备)。其中,存储器1130和存储介质1120可以是短暂存储或持久存储。存储在存储介质1120的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1110可以设置为与存储介质1120通信,在服务器1100上执行存储介质1120中的一系列指令操作。服务器1100还可以包括一个或一个以上电源1160,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1140,和/或,一个或一个以上操作系统1121,例如windows server
tm
,mac os x
tm
,unix
tm
,linux
tm
,freebsd
tm
等等。
155.输入输出接口1140可以用于经由一个网络接收或者发送数据。上述的网络a具体实例可包括服务器1100的通信供应商提供的无线网络。在一个实例中,输入输出接口1140包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1140可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
156.本领域普通技术人员可以理解,图11所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1100还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。
157.本技术的实施例还提供了一种计算机可读存储介质,所述存储介质可设置于服务器之中以保存用于实现方法实施例中一种应用程序性能分析方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的应用程序性能分析方法。
158.可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
159.本技术的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
160.由上述本技术提供的应用程序性能分析方法、系统、计算机设备、存储介质或计算机程序的实施例可见,本技术通过响应于性能检测指令,客户端执行对目标应用程序的模拟操作,生成目标应用程序的运行数据,大大提升了应用程序性能检测分析的自动化程度,节省了大量的时间和人力资源;然后,响应于性能分析指令,客户端对运行数据进行数据处理,得到待解析检测数据;客户端向本地服务器发送携带有待解析检测数据的数据解析指令;然后,响应于数据解析指令,本地服务器创建多个数据解析线程,对待解析检测数据进行数据切片,得到待解析检测数据的多个检测数据块,然后分别在每个数据解析线程中对对应的检测数据块进行性能数据解析,再生成目标应用程序的性能分析结果数据,能够减少客户端的性能压力,且大大提升应用程序性能分析的效率和灵活性。当上述的性能分析指令可以包括内存泄漏分析指令,上述的响应于性能分析指令,客户端对上述的运行数据进行数据处理,得到待解析检测数据可以包括响应于上述的性能分析指令,客户端创建内存截取进程,在该内存截取进程中截取该目标应用程序的目标内存信息,客户端将上述的目标内存信息作为上述的待解析检测数据,通过在该内存截取进程中截取该目标应用程序的目标内存信息该目标应用程序的目标内存信息,能够灵活高效地实现内存信息的获取,提升应用程序性能分析的效率。通过本地服务器根据上述多个内存切片对应的关联信息进行相似对象聚类,得到至少一个相似对象类,根据每个相似对象类生成对应的内存泄漏告警信息,进而本地服务器将上述的至少一个相似对象类对应的内存泄漏告警信息作为该目标应用程序的性能分析结果数据,有利于生成清晰合理的性能分析结果数据,方便后续准确高效地对该目标应用程序进行问题定位排查及针对性优化,减少时间和人力资源的消耗,改善用户体验。
161.需要说明的是:上述本技术实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
162.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
163.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
164.以上所述仅为本技术的较佳实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献