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

软件代码性能测试方法、装置和电子设备与流程

2022-12-20 22:35:20 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,尤其涉及一种软件代码性能测试方法、装置和电子设备。


背景技术:

2.随着计算机技术的不断发展,应用程序(application,app)带来了不同的数据业务。目前,app的性能优化依赖于对app的软件代码进行改进,能够满足设备资源有限的实际需求,还有利于提升用户使用app的体验。
3.在app的软件代码性能的测试过程中,需要技术人员反复对app改进前后的版本的软件代码进行阅读和比对,才能够分析出app改进后的版本的软件代码是否有性能的优化。可见,这种方式较为耗时,且测试效率低下。
4.因此,如何快速测试app的软件代码的性能是现亟需解决的问题。


技术实现要素:

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.第四方面,本公开提供了一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行第一方面及第一方面任一种可能的设计中的软件代码性能测试方法。
41.第五方面,本公开提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行第一方面及第一方面任一种可能的设计中的软件代码性能测试方法。
42.第六方面,本公开提供了一种芯片系统,芯片系统应用于包括显示器、存储器和传感器的电子设备;芯片系统包括:处理器;当处理器执行存储器中存储的计算机指令时,电子设备执行第一方面及第一方面任一种可能的设计中的软件代码性能测试方法。
附图说明
43.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
44.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
45.图1为本公开实施例提供的软件代码性能测试方法的流程示意图;
46.图2为本公开实施例提供的软件代码性能测试方法的流程示意图;
47.图3为本公开实施例提供的软件代码性能测试方法的流程示意图;
48.图4为本公开实施例提供的软件代码性能测试装置的结构示意图;
49.图5为本公开实施例提供的软件代码性能测试装置的结构示意图。
具体实施方式
50.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
51.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
52.示例性地,本公开提供一种软件代码性能测试方法、装置、设备、计算机存储介质以及计算机程序产品,可采集app的版本迭代前后的软件代码中的每个函数的调用时长,并对app的版本迭代前后的软件代码中的全部函数进行比对,得到对比火焰图的数据。其中,对比火焰图的数据能够表示出app的版本迭代前后的软件代码的性能差异。基于对比火焰图的数据,可分析并输出代码分析报告,以便及时、全面且准备地分析出app在版本迭代中的性能优劣,解决了应用程序的软件代码的性能优劣的测试耗时且效率低下的问题。
53.其中,本公开的软件代码性能测试方法由电子设备来执行。电子设备可以是平板电脑、手机、可穿戴设备、车载设备、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personaldigital assistant,pda)、智能电视、智慧屏、高清电视、4k电视、智能音箱、智能投影仪等设备,本公开对电子设备的具体类型不作任何限制。
54.其中,本公开对电子设备的操作系统的类型不做限定。例如,android系统、linux系统、windows系统、ios系统等。
55.基于前述描述,本公开以实施例将以电子设备为例,结合附图和应用场景,对本公开提供的软件代码性能测试方法进行详细阐述。
56.请参阅图1,图1为本公开实施例提供的软件代码性能测试方法的流程示意图。如图1所示,本公开提供的软件代码性能测试方法可以包括:
57.s101、采集第一调用结果和第二调用结果,第一调用结果中包括在运行基准包时基准包中的每个函数的调用时长,第二调用结果中包括在运行测试包时测试包中的每个函数的调用时长,基准包和测试包中包括同一应用程序的不同版本的软件代码。
58.电子设备可在运行基准包时采集基准包中的每个函数的调用时长,得到第一调用结果。可见,第一调用结果中包括基准包中的全部函数的调用时长。其中,基准包中包括一个应用程序的改进前的版本的软件代码。本公开对基准包的具体实现方式不做限定。
59.电子设备可在运行测试包时采集测试包中的每个函数的调用时长,得到第二调用结果。可见,第二调用结果中包括测试包中的全部函数的调用时长。其中,测试包中包括与基准包为同一应用程序的改进后的版本的软件代码。本公开对测试包的具体实现方式不做限定。
60.另外,本公开对一个函数的调用时长的采集方式不做限定。
61.在一些实施例中,电子设备可利用操作系统来采集软件代码中的每个函数的调用时长。
62.在另一些实施例中,电子设备可利用钩子(hook)函数来采集软件代码中的每个函数的调用时长。举例而言,在ios系统中,电子设备可以采用hook函数调用中心obj_msgsend
方法,来统计objective-c方法(即全部函数)的调用时长。
63.在另一些实施例中,电子设备可利用编译器来采集软件代码中的每个函数的调用时长。
64.s102、基于第一调用结果和第二调用结果,得到对比火焰图的数据,对比火焰图用于表示测试包相对于基准包的性能差异。
65.电子设备可采用火焰图的基本原理,以函数为横轴,横轴表示出函数的调用时长,且以函数对应的堆栈的深度为纵轴,纵轴表示出函数的调用关系,来构建对比火焰图。
66.从而,电子设备基于第一调用结果和第二调用结果,对测试包中的每个函数相对于基准包的调用时长进行比对,可得到对比火焰图的数据。
67.其中,本公开对对比火焰图的数据的具体实现方式不做限定。在一些实施例中,对比火焰图的数据中可以包括:测试包中的每个函数的函数名、每个函数的调用时长、每个函数的调用时长的变化情况、每个函数对应的堆栈的栈名、每个函数对应的调用关系等。
68.s103、基于对比火焰图的数据,输出代码分析报告。
69.电子设备对对比火焰图的数据进行分析,可输出代码分析报告。其中,代码分析报告中可以包括:相对于基准包,测试包中的新增的函数的调用时长和堆栈信息、消失的函数的调用时长和堆栈信息以及相同的函数的调用时长和堆栈信息中的至少一个。
70.从而,通过代码分析报告,可全面地得到测试包中已优化的函数、出现劣化的函数以及可优化的函数等性能点。
71.其中,本公开提及的堆栈信息可包括但不限于:函数对应的堆栈的栈名以及总调用时长等。并且,本公开对代码分析报告的具体实现方式不做限定。在一些实施例中,代码分析报告可按照函数的耗时排序输出对应的函数。
72.本公开提供的软件代码性能测试方法,通过采集应用程序的版本迭代中的全部函数的调用时长,来构建对比火焰图的数据,并基于对比火焰图的数据,输出代码分析报告,代码分析报告中包括:相对于基准包,测试包中的新增的函数的调用时长和堆栈信息、消失的函数的调用时长和堆栈信息以及相同的函数的调用时长和堆栈信息中的至少一个。从而,采用火焰图的基本原理,通过应用程序的改进前后的版本的软件代码的对比,实现了相对于应用程序的改进前的软件代码而言,对应用程序的改进后的版本的软件代码的性能的整体分析,不仅无需依赖于技术人员的手动参与,还能够及时、全面且准确地分析出应用程序在版本迭代中的性能优劣,为应用程序的软件代码的性能优化提供了指导方向。
73.基于上述实施例的描述,电子设备还可绘制对比火焰图,使得用户能够直观清楚地了解到测试包中的全部函数的调用时长的变化情况。此处的用户不仅可包括技术人员,还可包括测试包的使用用户。
74.下面,结合图2,介绍电子设备标记前述函数的具体实现过程。
75.请参阅图2,图2为本公开实施例提供的软件代码性能测试方法的流程示意图。如图2所示,本公开提供的软件代码性能测试方法可以包括:
76.s201、采集第一调用结果和第二调用结果,第一调用结果中包括在运行基准包时基准包中的每个函数的调用时长,第二调用结果中包括在运行测试包时测试包中的每个函数的调用时长,基准包和测试包中包括同一应用程序的不同版本的软件代码。
77.s202、基于第一调用结果和第二调用结果,得到对比火焰图的数据,对比火焰图用
于表示测试包相对于基准包的性能差异。
78.s203、基于对比火焰图的数据,输出代码分析报告,代码分析报告中包括:相对于基准包,测试包中的新增的函数的调用时长和堆栈信息、消失的函数的调用时长和堆栈信息以及相同的函数的调用时长和堆栈信息中的至少一个。
79.其中,步骤s201-s203的具体实现过程分别可参见图1中的步骤s101-s103的描述,此处不做赘述。
80.s204、基于对比火焰图的数据,绘制对比火焰图。
81.电子设备基于对比火焰图的数据,可通过判断测试包中的每个函数是否存在基准包中,来确定出测试包中的每个函数的调用时长相对于基准包的变化情况。
82.在基准包中存在测试包中的一个函数时,电子设备通过比较该函数分别在运行测试包时和运行基准包时的调用时长,可判断出该函数的调用时长是否增加、减少或保持不变。在基准包中不存在测试包中的一个函数时,电子设备可判断出该函数的调用时长增加。
83.从而,电子设备基于测试包中的每个函数的调用时长相对于基准包的变化情况,可绘制对比火焰图,用于表示出测试包整体相对于基准包的性能差异。
84.另外,除了对比火焰图之外,电子设备基于第一调用结果,还可绘制第一火焰图,用于表示出基础包的整体性能。电子设备基于第二调用结果,可绘制第二火焰图,用于表示出测试包的整体性能。
85.其中,本公开对第一火焰图和第二火焰图的具体实现方式不做限定。在一些实施例中,第一火焰图和第二火焰图均与对比火焰图保持相同含义的横轴和纵轴,可参见前文提及的内容,此处不做赘述。
86.从而,第一火焰图和第二火焰图均可作为对比火焰图的辅助信息,向用户更为全面地传达出测试包相对于基准包的性能差异。
87.本公开中,测试包中可能存在相对于基准包的调用时长发生变化的函数,而前述函数往往可能为测试包中的已优化的函数、出现劣化的函数或者可优化的函数。
88.由此,电子设备可在对比火焰图中对前述函数进行标记,以便用户能够及时了解到测试包中已优化的函数、出现劣化的函数以及可优化的函数等性能点。
89.下面,结合图3,介绍电子设备标记前述函数的具体实现过程。
90.请参阅图3,图3为本公开实施例提供的软件代码性能测试方法的流程示意图。如图3所示,本公开提供的软件代码性能测试方法可以包括:
91.s301、确定在基准包和测试包中均存在的目标函数的调用时长的变化情况。
92.电子设备从第一调用结果和第二调用结果中,可确定出同时存在在基准包和测试包中的目标函数,以及目标函数分别在运行基准包时和运行测试包时的调用时长。
93.其中,目标函数的数量可包括一个或多个。本公开对目标函数的具体类型和确定方式不做限定。
94.在一些实施例中,电子设备在基准包和测试包中存在栈名相同的调用栈时,可确定目标函数包括调用栈中的全部函数。
95.和/或,电子设备在基准包中的第一调用栈的栈顶函数与测试中的第二调用栈的栈顶函数中存在函数名相同的一个函数时,可确定目标函数包括函数。
96.和/或,电子设备在基准包中的第一调用栈的栈顶函数与测试包中的第二调用栈
的栈顶函数中存在函数名相同的多个函数时,可确定目标函数包括多个函数中的相似度大于等于预设值的函数。其中,相似度可理解为代码的相似度。本公开对预设值的具体数值不做限定。例如预设值设置为大于等于80%。
97.从而,电子设备基于目标函数分别在运行基准包时和运行测试包时的调用时长,可确定出目标函数的调用时长的变化情况。
98.s302、在变化情况表示目标函数分别在运行基准包时和运行测试包时的调用时长不同时,在对比火焰图中对目标函数进行标记。
99.在变化情况表示目标函数分别在运行基准包时和运行测试包时的调用时长不同时,电子设备可确定出目标函数为测试包中的已优化的函数、出现劣化的函数或者可优化的函数等。因此,电子设备可在对比火焰图中对目标函数进行标记,使得目标函数能够突出显示。
100.其中,电子设备可采用颜色、突出框、打标记等方式在对比火焰图中对目标函数进行标记。
101.s303、在变化情况表示目标函数分别在运行基准包时和运行测试包时的调用时长相同时,在对比火焰图中不对目标函数进行标记。
102.在变化情况表示目标函数分别在运行基准包时和运行测试包时的调用时长相同时,电子设备可确定出目标函数不为测试包中的已优化的函数、出现劣化的函数或者可优化的函数等。因此,电子设备无需在对比火焰图中对目标函数进行标记,避免用户花费过多的时间和精力来分析目标函数。
103.需要说明的是,步骤s302和步骤s303中,目标函数分别在运行基准包时和运行测试包时的调用时长是否不同或相同,可以是绝对时长,也可是在预设范围内的相对时长。其中,本公开对预设范围的具体数值不做限定。
104.本公开中,应用程序的一个软件代码在每次运行时的运行时长基本上是不同的。因此,步骤s102或步骤s202中,电子设备可设置时间标尺来统一对比火焰图的横轴,便于函数的耗时分析。例如,对比火焰图中,1厘米示100毫秒内采集到的函数的调用时长。
105.在一些实施例中,电子设备可采用时间标尺对第一调用结果和第二调用结果进行转化,并将转化后的数据确定为火焰图的数据。
106.另外,电子设备可采用相同的时间标尺,确定第一火焰图的数据为对第一调用结果进行转化的数据,以便实现第一火焰图的绘制,以及确定第二火焰图的数据为对第二调用结果进行转化的数据,以便实现第二火焰图的绘制。
107.基于上述实施例的描述,用户常常关注应用程序的一个软件代码中的一段时长内的性能点。因此,步骤s102或步骤s202中,电子设备可设置起始点的函数和结束点的函数来限定对比火焰图的绘制区域,方便对关注时长内的函数进行耗时分析。
108.在一些实施例中,电子设备可在第一调用结果和第二调用结果中,获取位于起始点的函数和结束点的函数之间的数据,并将位于起始点的函数和结束点的函数之间的数据确定为对比火焰图。
109.另外,电子设备可采用相同的起始点的函数和结束点的函数,确定第一火焰图的数据为在第一调用结果中的位于起始点的函数和结束点的函数之间的数据,以便实现第一火焰图的绘制,以及确定第二火焰图的数据为在第二调用结果中的位于起始点的函数和结
束点的函数之间的数据,以便实现第二火焰图的绘制。
110.示例性地,本公开提供一种软件代码性能测试装置。
111.请参阅图4,图4为本公开实施例提供的软件代码性能测试装置的结构示意图。本公开的软件代码性能测试装置可设置在电子设备中,可实现上述图1-图3实施例的软件代码性能测试方法对应于电子设备的操作。
112.如图4所示,本公开提供的软件代码性能测试装置100可以包括:采集模块101、确定模块102和输出模块103。
113.采集模块101,用于采集第一调用结果和第二调用结果,第一调用结果中包括在运行基准包时基准包中的每个函数的调用时长,第二调用结果中包括在运行测试包时测试包中的每个函数的调用时长,基准包和测试包中包括同一应用程序的不同版本的软件代码;
114.确定模块102,用于基于第一调用结果和第二调用结果,得到对比火焰图的数据,对比火焰图用于表示测试包相对于基准包的性能差异;
115.输出模块103,用于基于对比火焰图的数据,输出代码分析报告,代码分析报告中包括:相对于基准包,测试包中的新增的函数的调用时长和堆栈信息、消失的函数的调用时长和堆栈信息以及相同的函数的调用时长和堆栈信息中的至少一个。
116.请参阅图5,图5为本公开实施例提供的软件代码性能测试装置的结构示意图。如图5所示,本公开提供的软件代码性能测试装置100在图4所示装置结构的基础上,还可以包括:
117.绘制模块104,用于基于对比火焰图的数据,绘制对比火焰图。
118.在一些实施例中,确定模块102,还用于确定在基准包和测试包中均存在的目标函数的调用时长的变化情况;
119.绘制模块103,还用于在变化情况表示目标函数分别在运行基准包时和运行测试包时的调用时长不同时,在对比火焰图中对目标函数进行标记;在变化情况表示目标函数分别在运行基准包时和运行测试包时的调用时长相同时,在对比火焰图中不对目标函数进行标记。
120.在一些实施例中,确定模块102,还用于在基准包和测试包中存在栈名相同的调用栈时,确定目标函数包括调用栈中的全部函数;和/或,
121.在基准包中的第一调用栈的栈顶函数与测试中的第二调用栈的栈顶函数中存在函数名相同的一个函数时,确定目标函数包括函数;和/或,
122.在基准包中的第一调用栈的栈顶函数与测试包中的第二调用栈的栈顶函数中存在函数名相同的多个函数时,确定目标函数包括多个函数中的相似度大于等于预设值的函数。
123.在一些实施例中,确定模块102,具体用于确定火焰图的数据为采用时间标尺对第一调用结果和第二调用结果进行转化的数据。
124.在一些实施例中,确定模块102,具体用于确定对比火焰图的数据为在第一调用结果和第二调用结果中的位于起始点的函数和结束点的函数之间的数据。
125.本公开提供的软件代码性能测试装置,可执行上述方法实施例,其具体实现原理和技术效果,可参见上述方法实施例,本公开此处不再赘述。
126.示例性地,本公开提供一种电子设备,包括:一个或多个处理器;存储器;以及一个
或多个计算机程序;其中一个或多个计算机程序被存储在存储器中;一个或多个处理器在执行一个或多个计算机程序时,使得电子设备实现前文实施例的软件代码性能测试方法。
127.示例性地,本公开提供一种芯片系统,芯片系统应用于包括显示器、存储器和传感器的电子设备;芯片系统包括:处理器;当处理器执行存储器中存储的计算机指令时,电子设备执行前文实施例的软件代码性能测试方法。
128.示例性地,本公开提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器使得电子设备执行时实现前文实施例的软件代码性能测试方法。
129.示例性地,本公开提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行前文实施例的软件代码性能测试方法。
130.在上述实施例中,全部或部分功能可以通过软件、硬件、或者软件加硬件的组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本公开实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
131.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
132.以上仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献