CN111858287A - 代码性能评价方法及装置、电子设备和存储介质 - Google Patents
代码性能评价方法及装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN111858287A CN111858287A CN201910339880.8A CN201910339880A CN111858287A CN 111858287 A CN111858287 A CN 111858287A CN 201910339880 A CN201910339880 A CN 201910339880A CN 111858287 A CN111858287 A CN 111858287A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- determining
- code
- distribution
- 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.)
- Pending
Links
- 238000011156 evaluation Methods 0.000 title claims abstract description 108
- 238000009826 distribution Methods 0.000 claims abstract description 236
- 238000000034 method Methods 0.000 claims abstract description 42
- 238000012216 screening Methods 0.000 claims abstract description 41
- 230000001174 ascending effect Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 2
- 230000010354 integration Effects 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 238000012360 testing method Methods 0.000 abstract description 64
- 238000013522 software testing Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 12
- 238000009530 blood pressure measurement Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 7
- 238000011056 performance test Methods 0.000 description 7
- 238000011144 upstream manufacturing Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000012854 evaluation process Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000000585 Mann–Whitney U test Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000013215 result calculation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3628—Debugging of software of optimised code
-
- 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/3409—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 for performance assessment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开是关于一种代码性能评价方法及装置、电子设备以及存储介质,涉及软件测试技术领域,可以应用于对代码性能进行测试以判断代码性能的应用场景。该代码性能评价方法包括从用于分析代码性能的多个判断指标中选取一判断指标作为第一指标;获取第一代码的运行性能数据作为第一数据,从第一数据中筛选出第一指标的指标值并确定其数据分布为第一指标的第一数据分布;获取第二代码的运行性能数据作为第二数据,从第二数据中筛选出第一指标的指标值并确定其数据分布为第一指标的第二数据分布;根据第一数据分布与第二数据分布的相似度确定代码性能评价结果。本公开可以有效地避免由于下游基础服务不稳等因素导致无法准确判断代码性能的问题。
Description
技术领域
本公开涉及软件测试技术领域,具体而言,涉及一种代码性能评价方法、代码性能评价装置、电子设备以及存储介质。
背景技术
代码的性能测试是软件测试中的一个重要环节。在软件上线之前,要对代码的进行测试,以判断该软件是否可以正常上线;当软件上线后,由于业务需求的增加,可能需要对上线后的软件频繁迭代,此时,又需要对代码进行多次性能测试。
目前,通常采用测试工具Jmeter对单台机器进行性能测试,对于测试的结果,采取硬指标判断的方法,即指标在阈值范围之外即测试未通过。采用该方法在上下游服务稳定时得出的结果比较可靠。
然而,当上下游服务不稳定时,可能导致性能波动,超出阈值范围,人工无法准确判断是否存在问题,因此,需要对代码进行重新测试,导致测试时间较长,影响上线效率,耗费大量人力物力资源。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种代码性能评价方法、代码性能评价装置、电子设备以及计算机可读存储介质,进而至少在一定程度上克服由于下游基础服务不稳等各种因素导致无法判断代码性能的问题。
根据本公开的第一方面,提供一种代码性能评价方法,包括:确定用于分析代码性能的多个判断指标,从多个判断指标中选取一判断指标作为第一指标;获取第一代码的运行性能数据作为第一数据,从第一数据中筛选第一指标的指标值作为第一指标值,并确定第一指标值的数据分布作为第一指标的第一数据分布;获取第二代码的运行性能数据作为第二数据,从第二数据中筛选第一指标的指标值作为第二指标值,并确定第二指标值的数据分布作为第一指标的第二数据分布;确定第一指标的第一数据分布与第一指标的第二数据分布的相似度作为第一相似度,结合第一相似度确定代码性能评价结果。
可选的,获取第一代码的运行性能数据作为第一数据包括:每隔预设时间段获取第一代码的运行性能数据作为中间数据;从中间数据中筛选出数据项数量大于第一预设阈值的中间数据作为第一数据。
可选的,从第一数据中确定第一指标的指标值作为第一样本数据,并从第二数据中确定第一指标的指标值作为第二样本数据;其中,确定第一指标的第一数据分布与第一指标的第二数据分布的相似度作为第一相似度包括:确定第一样本数据的编号等级和作为第一数据等级和,并确定第二样本数据的编号等级和作为第二数据等级和;结合第一数据等级和与第二数据等级和确定一中间变量以及中间变量的标准分;对标准分进行积分运算以确定第一相似度。
可选的,确定第一样本数据的编号等级和作为第一数据等级和包括:对第一样本数据与第二样本数据进行混合处理后形成混合数据,按照数据值升序顺序对混合数据进行排序,并对排序后的混合数据逐个确定编号等级后形成第三样本数据;对第三样本数据中的第一样本数据的各编号等级相加后得到第一数据等级和。
可选的,根据第一相似度确定代码性能评价结果包括:根据第一相似度与第一预设阈值区间的关系确定第一数据分布与第二数据分布的分布结果;根据分布结果确定代码性能评价结果。
可选的,根据分布结果确定代码性能评价结果包括:如果第一相似度处于第一预设阈值区间内,则分布结果为目标分布结果,并确定代码性能满足预设要求;如果第一相似度未处于第一预设阈值区间内,则确定第一指标的指标类型,并基于指标类型确定代码性能评价结果。
可选的,第一指标的类型包括第一类型和第二类型,其中,基于指标类型确定代码性能评价结果包括:如果第一指标的类型为第一类型,且第一相似度大于第二预设阈值,则确定代码性能满足预设要求;如果第一指标的类型为第二类型,且第一相似度小于第三预设阈值,则确定代码性能满足预设要求。
可选的,根据分布结果确定代码性能评价结果还包括:如果第一相似度未处于第一预设阈值区间内,则确定第一样本数据的均值作为第一均值,确定第二样本数据的均值作为第二均值;确定第一均值与第二均值的均值比;如果均值比处于第二预设阈值区间内,则确定代码性能满足预设要求。
可选的,结合第一相似度确定代码性能评价结果包括:确定各判断指标中除第一指标外的另一判断指标作为第二指标;从第一数据中筛选第二指标的指标值作为第三指标值,并确定第三指标值的数据分布作为第二指标的第一数据分布;从第二数据中筛选第二指标的指标值作为第四指标值,并确定第四指标值的数据分布作为第二指标的第二数据分布;确定第二指标的第一数据分布与第二指标的第二数据分布的相似度作为第二相似度;根据第一相似度与第二相似度确定代码性能评价结果。
可选的,结合第一相似度确定代码性能评价结果包括:确定多个判断指标中除第一指标外的至少两个判断指标作为第三指标;从第一数据中筛选第三指标的指标值作为第五指标值,并确定第五指标值的数据分布作为各第三指标的第二数据分布;从第二数据中筛选第三指标的指标值作为第六指标值,并确定第六指标值的数据分布作为各第三指标的第二数据分布;确定各第三指标的第一数据分布与各第三指标的第二数据分布的相似度;根据确定出的各第三指标的第一数据分布与各第三指标的第二数据分布的相似度以及第一相似度确定代码性能评价结果。
根据本公开的第二方面,提供一种代码性能评价装置,包括:第一指标确定模块,用于确定用于分析代码性能的多个判断指标,从多个判断指标中选取一判断指标作为第一指标;第一分布确定模块,用于获取第一代码的运行性能数据作为第一数据,从第一数据中筛选第一指标的指标值作为第一指标值,并确定第一指标值的数据分布作为第一指标的第一数据分布;第二分布确定模块,用于获取第二代码的运行性能数据作为第二数据,从第二数据中筛选第一指标的指标值作为第二指标值,并确定第二指标值的数据分布作为第一指标的第二数据分布;第一结果确定模块,用于确定第一指标的第一数据分布与第一指标的第二数据分布的相似度作为第一相似度,结合第一相似度确定代码性能评价结果。
可选的,第一分布确定模块包括数据获取单元,用于每隔预设时间段获取第一代码的运行性能数据作为中间数据;从中间数据中筛选出数据项数量大于第一预设阈值的中间数据作为第一数据。
可选的,第一结果确定模块包括相似度确定单元,用于从第一数据中确定第一指标的指标值作为第一样本数据,并从第二数据中确定第一指标的指标值作为第二样本数据;确定第一样本数据的编号等级和作为第一数据等级和,并确定第二样本数据的编号等级和作为第二数据等级和;结合第一数据等级和与第二数据等级和确定一中间变量以及中间变量的标准分;对标准分进行积分运算以确定第一相似度。
可选的,相似度确定单元包括等级和确定子单元,用于对第一样本数据与第二样本数据进行混合处理后形成混合数据,按照数据值升序顺序对混合数据进行排序,并对排序后的混合数据逐个确定编号等级后形成第三样本数据;对第三样本数据中的第一样本数据的各编号等级相加后得到第一数据等级和。
可选的,第一结果确定模块还包括结果确定单元,用于根据第一相似度与第一预设阈值区间的关系确定第一数据分布与第二数据分布的分布结果;根据分布结果确定代码性能评价结果。
可选的,结果确定单元包括第一判断子单元,用于根据分布结果确定代码性能评价结果包括:如果第一相似度处于第一预设阈值区间内,则分布结果为目标分布结果,并确定代码性能满足预设要求;如果第一相似度未处于第一预设阈值区间内,则确定第一指标的指标类型,并基于指标类型确定代码性能评价结果。
可选的,结果确定单元还包括第二判断子单元,用于当第一指标的类型包括第一类型和第二类型时,如果第一指标的类型为第一类型,且第一相似度大于第二预设阈值,则确定代码性能满足预设要求;如果第一指标的类型为第二类型,且第一相似度小于第三预设阈值,则确定代码性能满足预设要求。
可选的,结果确定单元还包括第三判断子单元,根据分布结果确定代码性能评价结果还包括:如果第一相似度未处于第一预设阈值区间内,则确定第一样本数据的均值作为第一均值,确定第二样本数据的均值作为第二均值;确定第一均值与第二均值的均值比;如果均值比处于第二预设阈值区间内,则确定代码性能满足预设要求。
可选的,代码性能评价装置还包括第二结果确定模块,用于确定各判断指标中除第一指标外的另一判断指标作为第二指标;从第一数据中筛选第二指标的指标值作为第三指标值,并确定第三指标值的数据分布作为第二指标的第一数据分布;从第二数据中筛选第二指标的指标值作为第四指标值,并确定第四指标值的数据分布作为第二指标的第二数据分布;确定第二指标的第一数据分布与第二指标的第二数据分布的相似度作为第二相似度;根据第一相似度与第二相似度确定代码性能评价结果。
可选的,代码性能评价装置还包括第三结果确定模块,用于确定多个判断指标中除第一指标外的至少两个判断指标作为第三指标;从第一数据中筛选第三指标的指标值作为第五指标值,并确定第五指标值的数据分布作为各第三指标的第二数据分布;从第二数据中筛选第三指标的指标值作为第六指标值,并确定第六指标值的数据分布作为各第三指标的第二数据分布;确定各第三指标的第一数据分布与各第三指标的第二数据分布的相似度;根据确定出的各第三指标的第一数据分布与各第三指标的第二数据分布的相似度以及第一相似度确定代码性能评价结果。
根据本公开的第三方面,提供一种电子设备,包括:处理器;以及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现根据上述任意一项所述的代码性能评价方法。
根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据上述任意一项所述的代码性能评价方法。
本公开的示例性实施例中的代码性能评价方法,首先,确定用于分析代码性能的多个判断指标,从多个判断指标中选取一判断指标作为第一指标;其次,获取第一代码的运行性能数据作为第一数据,从第一数据中筛选第一指标的指标值作为第一指标值,并确定第一指标值的数据分布作为第一指标的第一数据分布;获取第二代码的运行性能数据作为第二数据,从第二数据中筛选第一指标的指标值作为第二指标值,并确定第二指标值的数据分布作为第一指标的第二数据分布;再次,确定第一指标的第一数据分布与第一指标的第二数据分布的相似度作为第一相似度,结合第一相似度确定代码性能评价结果。通过本公开的代码性能评价方法,一方面,在相同环境下,对两组代码进行测试,可以有效避免由于基础服务不稳定或机器性能不稳定等因素对代码性能的测试结果造成的影响。另一方面,可以自动对抓取到的两组代码的性能测试数据进行计算和判断,可以减少人工对性能测试过程的干预,减轻了测试人员的工作量。再一方面,通过分析指标值对代码性能测试进行判断,可以使测试结果更加真实可靠,减少测试次数,节省服务器等物力资源。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本公开的示例性实施方式的代码性能评价方法的流程图;
图2示意性示出了根据本公开的示例性实施方式的代码性能评价过程的详细流程图;
图3示意性示出了根据本公开的示例性实施方式的根据指标值进行结果逻辑判断的流程图;
图4示意性示出了根据本公开的示例性实施方式的代码性能正常情况下的指标avg的结果对比图;
图5示意性示出了根据本公开的示例性实施方式的代码性能正常情况下的指标tp99的结果对比图;
图6示意性示出了根据本公开的示例性实施方式的代码性能异常情况下的指标avg的结果对比图;
图7示意性示出了根据本公开的示例性实施方式的代码性能异常情况下的指标tp99的结果对比图;
图8示意性示出了根据本公开的示例性实施方式的代码性能评价装置的第一方框图;
图9示意性示出了根据本公开的示例性实施方式的第一分布确定模块的方框图;
图10示意性示出了根据本公开的示例性实施方式的第一结果确定模块的第一方框图;
图11示意性示出了根据本公开的示例性实施方式的相似度确定单元的方框图;
图12示意性示出了根据本公开的示例性实施方式的第一结果确定模块的第二方框图;
图13示意性示出了根据本公开的示例性实施方式的结果确定单元的第一方框图;
图14示意性示出了根据本公开的示例性实施方式的结果确定单元的第二方框图;
图15示意性示出了根据本公开的示例性实施方式的结果确定单元的第三方框图;
图16示意性示出了根据本公开的示例性实施方式的代码性能评价装置的第二方框图;
图17示意性示出了根据本公开的示例性实施方式的代码性能评价装置的第二方框图;
图18示意性示出了根据本公开一示例性实施例的电子设备的框图;以及
图19示意性示出了根据本公开一示例性实施例的计算机可读存储介质的示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个软件硬化的模块中实现这些功能实体或功能实体的一部分,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
目前,对软件性能测试的结果,通常采用硬指标判断的方法,即指标在阈值范围之外为测试未通过。然而,采用硬指标判断的方法,当下游服务不稳定时,可能导致性能波动进而使指标超出阈值范围,且人工无法准确判断是否存在问题。当无法准确判断时,需要对代码进行重新测试,耗费时间较长,影响上线效率。另外,如果代码中加入新功能导致线上性能发生变化,需要进行多次测试以得到较为可靠的阈值范围,耗费人力与物力资源。
基于此,在本示例实施例中,首先提供了一种代码性能评价方法,可以利用服务器来实现本公开的用代码性能评价方法,也可以利用终端设备来实现本公开所述的方法,其中,所述终端设备例如可以为手机、电脑等各种电子设备。参考图1,该代码性能评价方法可以包括以下步骤:
步骤S110.确定用于分析代码性能的多个判断指标,从多个判断指标中选取一判断指标作为第一指标。
在本公开的一些示例性实施方式中,通过分析代码性能可以判断软件是否满足设计的期望值,代码性能分析可以通过分析软件运行时多个判断指标的具体数值分布情况来实现。例如,判断指标可以包括但不限于可用率、执行速度、内存分配、启动时间、负载承受能力、执行时间、中央处理器(Central Processing Unit,CPU)时间、磁盘吞吐量和响应时间等。例如,在本公开中以选用的可用率、平均时延、排名处于99位的时延(TopPercentile99,tp99)等三个判断指标为例,分析代码性能评价的过程。可用率可以是代码运行过程中返回的可用数据的条数占全部数据的比例,例如,如果100条数据中有一个数据返回为空,一个数据的返回值为错误的值,则可用率为98%。平均时延可以采用avg表示,代表响应请求的平均时延,即多条请求所用时延的平均值。tp99可以通过以下方式得出,对多个响应请求的时延按照所用时间从小到大进行排序,选取排序后处于第99位的请求时延。从确定出的多个判断指标中选取一个指标作为第一指标,用于分析代码运行时的性能。
本领域技术人员容易理解的是,在本公开的其他示例性实施例中,可以选取其他代码性能分析判断指标对代码的性能进行分析,以达到获取代码评价结果的作用,本示例性实施例中对此不做特殊限定。
步骤S120.获取第一代码的运行性能数据作为第一数据,从第一数据中筛选第一指标的指标值作为第一指标值,并确定第一指标值的数据分布作为第一指标的第一数据分布。
在本公开的一些示例性实施方式中,在开始对代码性能进行测试之前,需要先搭建两套性能相近的测试环境,例如,可以搭建一套base环境,用于部署线上运行代码,另一套为compare环境,用于部署测试代码。两套环境只有代码不一致,测试使用的测试数据完全相同,其他也完全相同,上下游服务版本等也一致。环境搭建完成之后,同时对两套环境进行重启服务、测试等操作,并根据测试起始时间分别抓取监控数据。
代码的运行性能数据可以通过数据抓取平台获取,进行代码测试时,可以采用持续集成平台来完成代码测试(即压测)工作,例如,采用Jenkins平台监控软件开发流程,可以快速问题定位及处理。并且,可以采用统一监控平台(Unified Monitoring Platform,UMP)和观察(Observer)平台抓取代码运行时的运行性能数据。根据处理业务的不同,举例而言,可以采用UMP平台用于获取全推荐位数据,以1分钟为粒度进行数据抓取,可以采用Observer平台用与获取单推荐位数据,以30秒为粒度进行抓取。可以将base环境中运行的代码作为第一代码,将第一代码的各项运行性能数据作为第一数据,从抓取到的第一数据中获取第一指标的运行数据作为第一指标的指标值,并确定第一指标的指标值的分布情况。
根据本公开的一些示例性实施例,每隔预设时间段获取第一代码的运行性能数据作为中间数据;从中间数据中筛选出数据项数量大于第一预设阈值的中间数据作为第一数据。预设时间段可以为相邻两次抓取代码运行性能数据时间隔的时间,例如,根据数据的不同可以设置为:全推荐位数据每1分钟抓取一次,单推荐位数据每30秒抓取一次。对于抓取到的监控数据,存在某些数据的每秒查询率(Query Per Second,QPS)较低、导致抓取数据过少的情况。如果数据量过少,可能造成后续结果计算不准确,缺少可信度。
因此,在选取数据时,如果base组或者compare组样本量小于10,将丢弃该数据,不进行后续计算。另外,在测试开始和结束时,服务可能不稳定,性能波动较大,为保证样本数据的真实性和可信性,可以去掉测试刚开始的一个时间段的数据和测试结束前的一个预设时间段的数据,例如,在一次代码测试过程中,去掉了测试开始后前4分钟的数据和测试结束前1分钟的数据,将产生的其他代码运行性能数据作为计算时所用的数据。
第一预设阈值可以为代码测试之前预先配置的值,第一预设阈值规定了第一数据中可以包含的最小数据量,例如,第一预设阈值可以设置为10,对于抓取到的运行数据,保留数据项大于10的测试数据作为第一数据。
步骤S130.获取第二代码的运行性能数据作为第二数据,从第二数据中筛选第一指标的指标值作为第二指标值,并确定第二指标值的数据分布作为第一指标的第二数据分布。
在本公开的一些示例性实施方式中,第二代码可以为部署在compare环境中的测试代码。第二代码的第一指标与第一代码的第一指标相同,例如,可以选取avg作为第一指标。
容易理解的是,第二数据的获取方法、第二数据分布的确定方法分别与第一数据的获取方法、第一数据分布的确定方法相同,本公开对此不再赘述。
步骤S140.确定第一指标的第一数据分布与第一指标的第二数据分布的相似度作为第一相似度,结合第一相似度确定代码性能评价结果。
在本公开的一些示例性实施方式中,第一相似度可以是基于第一指标确定出的第一数据分布和第二数据分布的分布相似度,确定出第一相似度后,结合第一相似度确定代码性能评价结果。计算第一相似度可以采用曼-惠特尼秩和检验(Mann–Whitney U test)方法来完成。曼-惠特尼秩和检验方法采用获取到的代码运行性能样本数据对代码运行性能数据的总体分布形态进行推断,能够充分体现两个独立样本之间的差异性。
根据本公开的一些示例性实施例,从第一数据中确定第一指标的指标值作为第一样本数据,并从第二数据中确定第一指标的指标值作为第二样本数据;确定第一样本数据的编号等级和作为第一数据等级和,并确定第二样本数据的编号等级和作为第二数据等级和;结合第一数据等级和与第二数据等级和确定一中间变量以及中间变量的标准分;对标准分进行积分运算以确定第一相似度。
第一数据可以是包括了第一代码运行性能的所有指标的指标值数据,第二数据可以是包括了第二代码运行性能的所有指标的指标值数据。从第一数据中确定出第一指标的指标值作为第一样本数据,并从第二数据中确定出第一指标的指标值作为第二样本数据。第一样本数据可以为部署在base环境中的代码运行时产生的运行性能数据,可以将第一样本数据记为base组样本数据;第二样本数据可以为部署在compare环境中的测试代码运行时产生的运行性能数据,可以将第二样本数据记为compare组样本数据。
根据本公开的另一示例性实施例,对第一样本数据与第二样本数据进行混合处理后形成混合数据,按照数据值升序顺序对混合数据进行排序,并对排序后的混合数据逐个确定编号等级后形成第三样本数据;对第三样本数据中的第一样本数据的各编号等级相加后得到第一数据等级和。第三样本数据可以是对确定出的第一样本数据和第二样本数据进行混合处理后,对混合处理后的数据按照数据大小的升序顺序对混合数据进行排序并确定编号等级后形成的。即,最小的数据等级为1,第二小的数据等级为2,以此类推,直至逐个确定出混合数据中所有数据的编号等级。另外,如果混合后的数据中存在相等的情况,那么相同数据的等级值应该是相同的,并取未经排名的数组中的平均值。举例而言,一组数据为{4,7,7,9,13},那么该组数据的编号等级应该是{1,2.5,2.5,4,5},那么该组数据的编号等级和为15。
按照上述方法,可以将base组和compare组样本数据混合,并按照数据大小的升序编排编号等级,将混合后的数据集合记为A,其中来自base组的数据组成集合B,来自compare组的数据组成集合C。确定base组的样本数据的编号等级和作为第一数据等级和,并确定compare组的样本数据的编号等级和作为第二数据等级和,分别对应求出两个样本数据组的等级和和Rbase和Rcompare,分别记为Rb和Rc,公式1和公式2分别定义了Rb和Rc的计算方法。
其中,Ai指的是集合A中来自于base组的数据,Aj指的是集合A中来自compare组的数据。
当样本数据量大于10时,认为随机变量近似服从正态分布,根据公式3和公式4分别计算出两组数据的U值Ubase和Ucompare,分别记为Ub和Uc,其中,nb指的是B集合数据个数,nc指的是C集合数据个数。
按照公式5计算出Ucompare的标准分Zcompare,记为Zc,其中,mU指的是随机变量U的均值,σU是将U近似为服从标准正态分布并且考虑了的标准差,a指的是调整因子,当Uc高于mU时取0.5,Uc低于mU时取-0.5。公式6定义了mU的计算方法,公式7定义了σU的计算方法。
根据(0,1)正态分布的累积分布函数(Cumulative Distribution Function,CDF)曲线,可以将标准分Zcompare映射成(0,1)范围内的值,并将该值作为两组数据的分布相似度,记为p,公式8确定了p的计算方法。
根据公式5及公式8,容易得出,当base组和compare组计算出的标准分相近时,Uc近似等于均值mU,Zc取值为0,p值计算为0.5,此时可认为两组分布差异值最小。当p值越接近于1,可知compare组的结果在数值上大于base组的频率越高,当p值越接近于0,compare组的结果在数值上小于base组的频率越高。总的来说,可将p值作为两组数据的分布差异值,p值接近于0.5时,认为两组分布一致。
根据本公开的又一示例性实施例,根据第一相似度与第一预设阈值区间的关系确定第一数据分布与第二数据分布的分布结果;根据分布结果确定代码性能评价结果。第一预设阈值区间可以为预先配置的阈值区间,根据第一相似度的值是否处于第一预设阈值区间内,确定第一数据分布与第二数据分布的分布结果,例如,第一预设阈值区间可以配置为(0.4,0.6)。
根据本公开的一些示例性实施例,如果第一相似度处于第一预设阈值区间内,则分布结果为目标分布结果,并确定代码性能满足预设要求;如果第一相似度未处于第一预设阈值区间内,则确定第一指标的指标类型,并基于指标类型确定代码性能评价结果。目标分布结果可以为两组样本数据的数据分布相似的结果。参考图2,在步骤S201~步骤S202中,判断p值是否处于阈值范围内,举例而言,当p值处于(0.4,0.6)内时,可以认为两组样本数据的分布相似,即代码性能满足预设要求。否则,若p值未处于(0.4,0.6)内时,需要进一步确定第一指标的指标类型,进而基于指标类型确定代码性能评价结果。指标类型可以为区分代码性能的不同类型的指标。
根据本公开的另一示例性实施例,第一指标的类型包括第一类型和第二类型,如果第一指标的类型为第一类型,且第一相似度大于第二预设阈值,则确定代码性能满足预设要求;如果第一指标的类型为第二类型,且第一相似度小于第三预设阈值,则确定代码性能满足预设要求。一般判断指标可以分为两种类型,一种是高指标,即指标值越大性能越好,例如可用率,可以将高指标确定为第一类型的指标;另一种是低指标,即指标值越小性能越好,例如avg,可以将低指标确定为第二类型的指标。第二预设阈值和第三预设阈值分别为用于与第一类型的指标值和第二类型的指标值进行对比而预先配置的值。
参考图2,在步骤S203~步骤S209中,如果p值未处于(0.4,0.6)内时,可以认为两组样本数据的分布未达到目标分布的结果,因此,需要进一步判断第一指标的指标类型,将第一类型指标对应的标记(即tag)记为“High”;将第二类型指标对应的tag记为“Low”。对tag为“High”的指标进行判断时,若p值大于上阈值,则认为测试代码的性能优于线上版本代码的性能,认为代码性能满足预设要求,即压测通过。同理,对tag为“Low”的指标,若p值小于下阈值,也认为测试代码的性能优于线上版本代码的性能,认为代码性能满足预设要求,即压测通过。
举例而言,将第二预设阈值配置为95%,当第一指标为可用率时,如果计算出的可用率的值为98%时,则98%>95%,可用率的值大于第二预设阈值,认为测试代码的性能优于线上版本代码的性能,则代码性能符合预设要求,即压测通过;如果计算出的可用率的值为90%时,则90%<95%,可用率的值小于第二预设阈值,认为测试代码的性能相比于线上版本代码性能相对较差,则代码性能不符合预设要求,即压测未通过。
另外,将第三预设阈值配置为100,当第一指标为avg时,如果计算出的avg的值为98时,则98<100,avg的值小于第三预设阈值,认为测试代码的性能优于线上版本代码的性能,则代码性能符合预设要求,即压测通过;如果计算出的可用率的值为105时,则105>100,avg的值大于第三预设阈值,认为测试代码的性能相比于线上版本代码性能相对较差,则代码性能不符合预设要求,即压测未通过。
根据本公开的又一示例性实施例,如果第一相似度未处于第一预设阈值区间内,则确定第一样本数据的均值作为第一均值,确定第二样本数据的均值作为第二均值;确定第一均值与第二均值的均值比;如果均值比处于第二预设阈值区间内,则确定代码性能满足预设要求。第一均值可以为第一样本数据的所有数据均值,第二均值可以为第二样本数据的所有数据均值。均值比可以为第二均值与第一均值的比值,第二预设阈值区间可以是用于与均值比进行判断的阈值区间。确定出均值比后,将均值比与第二预设阈值区间进行对比。若均值比在第二预设阈值区间内,即使p值判断为未通过,也可以认为压测通过。只有当p值判断为未通过,均值比也在阈值范围之外时,才认为压测失败,此次测试代码可能存在问题,可回滚上版代码进行进一步检验。
上述结果判断过程中涉及到两个阈值,一个是用于与分布相似度进行对比的分布差异值的阈值,另一个是与均值比进行对比的均值比阈值。对于分布差异值的阈值,由于计算的是标准分,并对最后的结果进行了归一化的操作,所以无需对不同类型的指标设置不同的阈值。又因两组环境相似,当上下游服务出现抖动时,该段压测结果会同时出现波动,也无需对该阈值进行额外调整。对于均值比阈值,由于每个指标可以容忍的变化范围和变化程度不同,需要对每个指标单独调整;初始阈值设置好之后,同样无需再进行额外调整。
除了阈值参数的调整,机器的选择也是很关键的因素。实际过程中,建议选择内存、运算速度等相近的物理机作为测试机器,并且尽量减少上下游服务性能不一致带来的干扰。这样,最后结果会更真实可靠。
根据本公开的一些示例性实施例,确定各判断指标中除第一指标外的另一判断指标作为第二指标;从第一数据中筛选第二指标的指标值作为第三指标值,并确定第三指标值的数据分布作为第二指标的第一数据分布;从第二数据中筛选第二指标的指标值作为第四指标值,并确定第四指标值的数据分布作为第二指标的第二数据分布;确定第二指标的第一数据分布与第二指标的第二数据分布的相似度作为第二相似度;根据第一相似度与第二相似度确定代码性能评价结果。第二指标可以为多个判断指标中除第一指标外的其他判断指标中的一个判断指标,确定出第二指标后,采用第一指标的判断方式对代码测试过程中,两组代码的代码运行性能的第二指标的指标值的数据分布情况确定第二相似度。计算出第二相似度后,结合第一相似度的结果综合确定代码性能的评价结果。
根据本公开的另一示例性实施例,确定多个判断指标中除第一指标外的至少两个判断指标作为第三指标;从第一数据中筛选第三指标的指标值作为第五指标值,并确定第五指标值的数据分布作为各第三指标的第二数据分布;从第二数据中筛选第三指标的指标值作为第六指标值,并确定第六指标值的数据分布作为各第三指标的第二数据分布;确定各第三指标的第一数据分布与各第三指标的第二数据分布的相似度;根据确定出的各第三指标的第一数据分布与各第三指标的第二数据分布的相似度以及第一相似度确定代码性能评价结果。
第三指标可以为多个判断指标中除第一指标外的其他判断指标中的多个判断指标。确定出第三指标后,采用第一指标的指标值的数据分布确定方式,确定出的第一代码的第三指标的指标值的数据分布与第二代码的第三指标的指标值的数据分布之间的分布相似度,计算出分布相似度后,结合第一相似度的结果综合确定代码性能的评价结果。采用多个判断指标的数据分布相似度综合判断代码性能,可以使确定出的代码性能评价更加准确。
本领域技术人员容易理解的是,确定第二指标的第一数据分布、第二指标的第二数据分布、各第三指标的第一数据分布、各第三指标的第二数据分布的方法与确定第一指标的第一数据分布的方法相同,本公开对比不再赘述。
参考图3,在步骤S301~步骤S303中,将两组代码分别推送至部署完成的base环境和compare环境中进行压测,并抓取压测时的各项指标项数据值,将抓取到的数据值确定两组样本数据,以便基于两组样本数据确定该两组样本数据的分布相似度。在步骤S304~步骤S308中,开始循环测试各项指标,判断每一种指标对应的数据分布情况,当数据分布差异值在阈值范围内时,将认为此项指标的测试通过,当所有的指标项对应的数据分布差异值都处于阈值范围内时,则认为代码性能满足预设要求,即压测通过。在步骤S309~步骤S314中,如果存在某一指标的数据分布差异值不在预设阈值范围内,将继续判断该指标的均值比,根据均值比是否处于预设阈值范围的判断代码性能是否满足预设要求。
根据本公开的代码性能评价方法,分别给出判断指标的数据分布在正常情况下与异常情况下的代码性能评价结果。
(1)正常情况下,计算出的判断指标的对应p值在阈值范围内。当两组结果差异很小或者无差异时,p值应该在0.5左右。表1中展示了某次压测得到的分析判断结果。表1中给出了不同判断指标对应的指标值,其中,采用metric表示判断指标,mean_compare表示compare组的均值结果,mean_base表示base组的均值结果,deviation表示均值比,statistic表示compare组的秩和,pvalue表示p值,result表示给出的判断结果。参考图4和图5,在UMP平台上截取了该次压测时段内的监控指标情况,其中,端口“172.28.78.40”对应的折线表示base组的avg/tp99,端口“172.28.78.44”对应的折线表示compare组的avg/tp99。可以看出,两组压测结果确实非常接近,且曲线走势平稳,可以通过。这与分析表格中的判断结果一致。
表1
(2)当出现异常情况时,至少存在一个判断指标,计算的该判断指标的对应p值在阈值范围外。表2中展示了某次出现异常情况的计算结果。可以看出,avg和tp99指标均判断为未通过。同样,参考图6和图7所示,其中,端口“172.28.78.40”对应的折线表示base组的avg/tp99,端口“172.28.78.44”对应的折线表示compare组的avg/tp99,在UMP平台上可以看出,该时段内(09/12 16:23-09/12 16:43)其中,compare组对应的折线稳定在base组对应的折线上方,compare组的avg比base组一直要高7-8ms。为了确定性能测试结果是否为代码问题,可以将compare组回滚至上一版代码,重新进行压测,压测结果显示两条曲线接近重合(09/12 16:50-09/12 17:03)。最后,再一次对新提交代码进行部署压测,可以看到,复现了高7-8ms的异常情况(09/12 17:08-09/1217:21)。因此可以认为,本次提交代码存在问题,需要进行进一步的检查。
表2
需要说明的是,本公开所使用的术语“第一”、“第二”、“第三”、“第四”、“第五”、“第六”等,仅是为了区分不同的相似度、不同的预设阈值、不同的指标、不同的指标值、不同的指标类型、不同的预设阈值区间、不同的均值、不同的数据分布等,并不应对本公开造成任何限制。
综上所述,本公开的代码性能评价方法,首先,确定用于分析代码性能的多个判断指标,从多个判断指标中选取一判断指标作为第一指标;其次,获取第一代码的运行性能数据作为第一数据,从第一数据中筛选第一指标的指标值作为第一指标值,并确定第一指标值的数据分布作为第一指标的第一数据分布;获取第二代码的运行性能数据作为第二数据,从第二数据中筛选第一指标的指标值作为第二指标值,并确定第二指标值的数据分布作为第一指标的第二数据分布;再次,确定第一指标的第一数据分布与第一指标的第二数据分布的相似度作为第一相似度,结合第一相似度确定代码性能评价结果。本公开的代码性能评价方法,一方面,采用两组完全相同的环境和服务对两组不同的代码进行性能测试,通过分析代码运行性能数据的分布情况确定代码性能的评价结果,可以有效规避由于上下游基础服务的不稳定或者机器性能的差异等因素可能造成的性能波动而对对代码测试结果造成的影响。另一方面,基于监控平台可以获取到代码测试过程中的代码运行性能数据,对获取到的数据进行筛选和处理后,进行判断逻辑处理,可以减少代码测试评价过程中的人工干预,减轻测试人员的工作负担。又一方面,本公开可以避免由于无法对代码性能的结果判断准确的原因,需要对代码进行重新测试而造成测试时间较长、测试效率、影响软件上限等问题,可以缩短代码开发和测试周期。再一方面,采用分布相似度和均值比等因素对代码性能评价结果进行综合判断,可以反映出代码中添加的新功能导致代码性能发生变化的状态,使得测试结果更加真实可靠。
此外,在本示例实施例中,还提供了一种代码性能评价装置。参考图8,该代码性能评价装置800可以包括第一指标确定模块810、第一分布确定模块820、第二分布确定模块830以及第一结果确定模块840。
具体的,第一指标确定模块810可以用于确定用于分析代码性能的多个判断指标,从多个判断指标中选取一判断指标作为第一指标;第一分布确定模块820可以用于获取第一代码的运行性能数据作为第一数据,从第一数据中筛选第一指标的指标值作为第一指标值,并确定第一指标值的数据分布作为第一指标的第一数据分布;第二分布确定模块830可以用于获取第二代码的运行性能数据作为第二数据,从第二数据中筛选第一指标的指标值作为第二指标值,并确定第二指标值的数据分布作为第一指标的第二数据分布;第一结果确定模块840可以用于确定第一指标的第一数据分布与第一指标的第二数据分布的相似度作为第一相似度,结合第一相似度确定代码性能评价结果。
代码性能评价装置800可以基于确定出的用于分析代码性能的多个判断指标,对两组代码在相同环境中的运行性能进行测试,并基于两组代码的性能运行数据的分布情况确定代码的性能评价结果,可以有效地规避由于基础服务不稳定对测试结果造成的影响,并且保证测试结果的准确性,是一种行之有效的代码性能评价装置。
根据本公开的一些示例性实施例,参考图9,第一分布确定模块820可以包括数据获取单元910。
具体的,数据获取单元910可以用于每隔预设时间段获取第一代码的运行性能数据作为中间数据;从中间数据中筛选出数据项数量大于第一预设阈值的中间数据作为第一数据。
数据获取单元910可以按照预设时间段抓取代码运行时的性能数据,并筛选出满足条件的数据作为分析数据,确保样本数据的可用性,为后续计算分布相似度提供数据支持。
根据本公开的另一示例性实施例,参考图10,第一结果确定模块840可以包括相似度确定单元1010。
具体的,相似度确定单元1010用于从第一数据中确定第一指标的指标值作为第一样本数据,并从第二数据中确定第一指标的指标值作为第二样本数据;确定第一样本数据的编号等级和作为第一数据等级和,并确定第二样本数据的编号等级和作为第二数据等级和;结合第一数据等级和与第二数据等级和确定一中间变量以及中间变量的标准分;对标准分进行积分运算以确定第一相似度。
相似度确定单元1010将曼-惠特尼秩和检验方法的原理运用到数据分布的相似度计算过程中,采用该方法可以在计算过程中使用更加丰富的样本数据信息,较好地计算出两种样本数据之间的差异性。
根据本公开的另一示例性实施例,参考图11,相似度确定单元1010可以包括等级和确定子单元1110。
具体的,等级和确定子单元1110用于对第一样本数据与第二样本数据进行混合处理后形成混合数据,按照数据值升序顺序对混合数据进行排序,并对排序后的混合数据逐个确定编号等级后形成第三样本数据;对第三样本数据中的第一样本数据的各编号等级相加后得到第一数据等级和。
等级和确定子单元1110可以对两组样本数据进行混合后分别计算出每组样本数据的编号等级和,以便基于编号等级和计算两组样本数据的分布相似度。
根据本公开的再一示例性实施例,参考图12,第一结果确定模块1210相比于第一结果确定模块840,除包括相似度确定单元1010外,还可以包括结果确定单元1220。
具体的,结果确定单元1220可以用于根据第一相似度与第一预设阈值区间的关系确定第一数据分布与第二数据分布的分布结果;根据分布结果确定代码性能评价结果。
结果确定单元1220可以根据第一数据分布与第二数据分布的分布情况确定代码性能的评价结果。
根据本公开的一些示例性实施例,参考图13,结果确定单元1220可以包括第一判断子单元1310。
具体的,第一判断子单元1310用于根据分布结果确定代码性能评价结果包括:如果第一相似度处于第一预设阈值区间内,则分布结果为目标分布结果,并确定代码性能满足预设要求;如果第一相似度未处于第一预设阈值区间内,则确定第一指标的指标类型,并基于指标类型确定代码性能评价结果。
第一判断子单元1310确定了当第一相似度处于预设阈值区间时,代码性能的测试结果为满足预设要求;在当第一相似度未处于预设阈值区间时,继续结合第一指标的指标类型进一步确定代码性能评价结果。
根据本公开的另一示例性实施例,参考图14,结果确定单元1410相比于结果确定单元1220,除包括第一判断子单元1310外,还可以包括第二判断子单元1420。
具体的,第二判断子单元1420可以用于当第一指标的类型包括第一类型和第二类型时,如果第一指标的类型为第一类型,且第一相似度大于第二预设阈值,则确定代码性能满足预设要求;如果第一指标的类型为第二类型,且第一相似度小于第三预设阈值,则确定代码性能满足预设要求。
第二判断子单元1420可以在确定出第一指标所属的具体类型后,根据第一相似度与预设阈值的关系确定代码性能评价结果。
根据本公开的又一示例性实施例,参考图15,结果确定单元1510相比于结果确定单元1410,除包括第一判断子单元1310、第二判断子单元1420外,还可以包括第三判断子单元1520。
具体的,第三判断子单元1520可以根据分布结果确定代码性能评价结果还包括:如果第一相似度未处于第一预设阈值区间内,则确定第一样本数据的均值作为第一均值,确定第二样本数据的均值作为第二均值;确定第一均值与第二均值的均值比;如果均值比处于第二预设阈值区间内,则确定代码性能满足预设要求。
第三判断子单元1520可以在第一相似度未处于第一预设阈值区间内,采用两组样本数据的均值比与预设阈值的关系,确定代码性能的评价结果。
根据本公开的一些示例性实施例,参考图16,代码性能评价装置1600相比于代码性能评价装置800,除可以包括第一指标确定模块810、第一分布确定模块820、第二分布确定模块830以及第一结果确定模块840外,还可以包括第二结果确定模块1610。
具体的,第二结果确定模块1610可以用于确定各判断指标中除第一指标外的另一判断指标作为第二指标;从第一数据中筛选第二指标的指标值作为第三指标值,并确定第三指标值的数据分布作为第二指标的第一数据分布;从第二数据中筛选第二指标的指标值作为第四指标值,并确定第四指标值的数据分布作为第二指标的第二数据分布;确定第二指标的第一数据分布与第二指标的第二数据分布的相似度作为第二相似度;根据第一相似度与第二相似度确定代码性能评价结果。
第二结果确定模块1610可以从判断指标中确定一个除第一指标外的其他指标作为第二指标,根据第二指标的指标值的数据分布确定第二相似度,将第二相似度与第一相似度结合确定代码性能评价结果。
根据本公开的一些示例性实施例,参考图17,代码性能评价装置1700相比于代码性能评价装置1600,除可以包括第一指标确定模块810、第一分布确定模块820、第二分布确定模块830、第一结果确定模块840以及第二结果确定模块1610外,还可以包括第三结果确定模块1710。
具体的,第三结果确定模块1710可以用于确定多个判断指标中除第一指标外的至少两个判断指标作为第三指标;从第一数据中筛选第三指标的指标值作为第五指标值,并确定第五指标值的数据分布作为各第三指标的第二数据分布;从第二数据中筛选第三指标的指标值作为第六指标值,并确定第六指标值的数据分布作为各第三指标的第二数据分布;确定各第三指标的第一数据分布与各第三指标的第二数据分布的相似度;根据确定出的各第三指标的第一数据分布与各第三指标的第二数据分布的相似度以及第一相似度确定代码性能评价结果。
第三结果确定模块1710可以从判断指标中确定多个除第一指标外的其他指标作为第三指标,根据各第三指标的指标值的数据分布确定两组样本数据的分布相似度,将确定出的分布相似度与第一相似度结合确定代码性能评价结果,该模块在确定代码性能评价结果时,综合了多个指标的共同结果,使得评价结果更加准确。
上述中虚拟代码性能评价装置各模块的具体细节已经在对应的代码性能评价方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了代码性能评价装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施例、完全的软件实施例(包括固件、微代码等),或硬件和软件方面结合的实施例,这里可以统称为“电路”、“模块”或“系统”。
下面参考图18来描述根据本发明的这种实施例的电子设备1800。图18显示的电子设备1800仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图18所示,电子设备1800以通用计算设备的形式表现。电子设备1800的组件可以包括但不限于:上述至少一个处理单元1810、上述至少一个存储单元1820、连接不同系统组件(包括存储单元1820和处理单元1810)的总线1830、显示单元1840。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1810执行,使得所述处理单元1810执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
存储单元1820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)1821和/或高速缓存存储单元1822,还可以进一步包括只读存储单元(ROM)1823。
存储单元1820以包括具有一组(至少一个)程序模块1825的程序/实用工具1824,这样的程序模块1825包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1800也可以与一个或多个外部设备1870(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1800交互的设备通信,和/或与使得该电子设备1800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1850进行。并且,电子设备1800还可以通过网络适配器1860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1860通过总线1830与电子设备1800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
参考图19所示,描述了根据本发明的实施例的用于实现上述方法的程序产品1900,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。
Claims (13)
1.一种代码性能评价方法,其特征在于,包括:
确定用于分析代码性能的多个判断指标,从所述多个判断指标中选取一所述判断指标作为第一指标;
获取第一代码的运行性能数据作为第一数据,从所述第一数据中筛选所述第一指标的指标值作为第一指标值,并确定所述第一指标值的数据分布作为所述第一指标的第一数据分布;
获取第二代码的运行性能数据作为第二数据,从所述第二数据中筛选所述第一指标的指标值作为第二指标值,并确定所述第二指标值的数据分布作为所述第一指标的第二数据分布;
确定所述第一指标的第一数据分布与所述第一指标的第二数据分布的相似度作为第一相似度,结合所述第一相似度确定代码性能评价结果。
2.根据权利要求1所述的代码性能评价方法,其特征在于,获取第一代码的运行性能数据作为第一数据包括:
每隔预设时间段获取所述第一代码的运行性能数据作为中间数据;
从所述中间数据中筛选出数据项数量大于第一预设阈值的中间数据作为第一数据。
3.根据权利要求1所述的代码性能评价方法,其特征在于,从所述第一数据中确定所述第一指标的指标值作为第一样本数据,并从所述第二数据中确定所述第一指标的指标值作为第二样本数据;其中,确定所述第一指标的第一数据分布与所述第一指标的第二数据分布的相似度作为第一相似度包括:
确定所述第一样本数据的编号等级和作为第一数据等级和,并确定所述第二样本数据的编号等级和作为第二数据等级和;
结合所述第一数据等级和与所述第二数据等级和确定一中间变量以及所述中间变量的标准分;
对所述标准分进行积分运算以确定所述第一相似度。
4.根据权利要求3所述的代码性能评价方法,其特征在于,确定所述第一样本数据的编号等级和作为第一数据等级和包括:
对所述第一样本数据与所述第二样本数据进行混合处理后形成混合数据,按照数据值升序顺序对所述混合数据进行排序,并对排序后的所述混合数据逐个确定编号等级后形成第三样本数据;
对所述第三样本数据中的所述第一样本数据的各编号等级相加后得到第一数据等级和。
5.根据权利要求3所述的代码性能评价方法,其特征在于,根据所述第一相似度确定代码性能评价结果包括:
根据所述第一相似度与第一预设阈值区间的关系确定所述第一数据分布与所述第二数据分布的分布结果;
根据所述分布结果确定代码性能评价结果。
6.根据权利要求5所述的代码性能评价方法,其特征在于,根据所述分布结果确定代码性能评价结果包括:
如果所述第一相似度处于所述第一预设阈值区间内,则所述分布结果为目标分布结果,并确定所述代码性能满足预设要求;
如果所述第一相似度未处于所述第一预设阈值区间内,则确定所述第一指标的指标类型,并基于所述指标类型确定代码性能评价结果。
7.根据权利要求6所述的代码性能评价方法,其特征在于,所述第一指标的类型包括第一类型和第二类型,其中,基于所述指标类型确定代码性能评价结果包括:
如果所述第一指标的类型为第一类型,且所述第一相似度大于第二预设阈值,则确定所述代码性能满足预设要求;
如果所述第一指标的类型为第二类型,且所述第一相似度小于第三预设阈值,则确定所述代码性能满足预设要求。
8.根据权利要求6所述的代码性能评价方法,其特征在于,根据所述分布结果确定代码性能评价结果还包括:
如果所述第一相似度未处于所述第一预设阈值区间内,则确定所述第一样本数据的均值作为第一均值,确定所述第二样本数据的均值作为第二均值;
确定所述第一均值与所述第二均值的均值比;
如果所述均值比处于第二预设阈值区间内,则确定所述代码性能满足预设要求。
9.根据权利要求1所述的代码性能评价方法,其特征在于,结合所述第一相似度确定代码性能评价结果包括:
确定各所述判断指标中除所述第一指标外的另一判断指标作为第二指标;
从所述第一数据中筛选所述第二指标的指标值作为第三指标值,并确定所述第三指标值的数据分布作为所述第二指标的第一数据分布;
从所述第二数据中筛选所述第二指标的指标值作为第四指标值,并确定所述第四指标值的数据分布作为所述第二指标的第二数据分布;
确定所述第二指标的第一数据分布与所述第二指标的第二数据分布的相似度作为第二相似度;
根据所述第一相似度与所述第二相似度确定代码性能评价结果。
10.根据权利要求1所述的代码性能评价方法,其特征在于,结合所述第一相似度确定代码性能评价结果包括:
确定所述多个判断指标中除所述第一指标外的至少两个判断指标作为第三指标;
从所述第一数据中筛选所述第三指标的指标值作为第五指标值,并确定所述第五指标值的数据分布作为各所述第三指标的第一数据分布;
从所述第二数据中筛选所述第三指标的指标值作为第六指标值,并确定所述第六指标值的数据分布作为各所述第三指标的数据分布;
确定各所述第三指标的第一数据分布与各所述第三指标的第二数据分布的相似度;
根据确定出的各所述第三指标的第一数据分布与各所述第三指标的第二数据分布的相似度以及所述第一相似度确定代码性能评价结果。
11.一种代码性能评价装置,其特征在于,包括:
第一指标确定模块,用于确定用于分析代码性能的多个判断指标,从所述多个判断指标中选取一所述判断指标作为第一指标;
第一分布确定模块,用于获取第一代码的运行性能数据作为第一数据,从所述第一数据中筛选所述第一指标的指标值作为第一指标值,并确定所述第一指标值的数据分布作为所述第一指标的第一数据分布;
第二分布确定模块,用于获取第二代码的运行性能数据作为第二数据,从所述第二数据中筛选所述第一指标的指标值作为第二指标值,并确定所述第二指标值的数据分布作为所述第一指标的第二数据分布;
第一结果确定模块,用于确定所述第一指标的第一数据分布与所述第一指标的第二数据分布的相似度作为第一相似度,结合所述第一相似度确定代码性能评价结果。
12.一种电子设备,其特征在于,包括:
处理器;以及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现根据权利要求1至10中任一项所述的代码性能评价方法。
13.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1至10中任一项所述的代码性能评价方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910339880.8A CN111858287A (zh) | 2019-04-25 | 2019-04-25 | 代码性能评价方法及装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910339880.8A CN111858287A (zh) | 2019-04-25 | 2019-04-25 | 代码性能评价方法及装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111858287A true CN111858287A (zh) | 2020-10-30 |
Family
ID=72951275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910339880.8A Pending CN111858287A (zh) | 2019-04-25 | 2019-04-25 | 代码性能评价方法及装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858287A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791983A (zh) * | 2021-09-24 | 2021-12-14 | 北京顺源开华科技有限公司 | 应用代码的测试方法、装置以及电子设备 |
CN114968767A (zh) * | 2022-05-06 | 2022-08-30 | 北京奇艺世纪科技有限公司 | 代码检测方法、装置、终端设备以及可读存储介质 |
CN117609803A (zh) * | 2024-01-23 | 2024-02-27 | 山东硕德博数控机械有限公司 | 一种智能化数控机床代码数据安全存储方法 |
-
2019
- 2019-04-25 CN CN201910339880.8A patent/CN111858287A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791983A (zh) * | 2021-09-24 | 2021-12-14 | 北京顺源开华科技有限公司 | 应用代码的测试方法、装置以及电子设备 |
CN114968767A (zh) * | 2022-05-06 | 2022-08-30 | 北京奇艺世纪科技有限公司 | 代码检测方法、装置、终端设备以及可读存储介质 |
CN117609803A (zh) * | 2024-01-23 | 2024-02-27 | 山东硕德博数控机械有限公司 | 一种智能化数控机床代码数据安全存储方法 |
CN117609803B (zh) * | 2024-01-23 | 2024-05-03 | 山东硕德博数控机械有限公司 | 一种智能化数控机床代码数据安全存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413506B (zh) | 测试用例推荐方法、装置、设备及存储介质 | |
Nagappan et al. | Static analysis tools as early indicators of pre-release defect density | |
US10819603B2 (en) | Performance evaluation method, apparatus for performance evaluation, and non-transitory computer-readable storage medium for storing program | |
US20230086361A1 (en) | Automatic performance evaluation in continuous integration and continuous delivery pipeline | |
CN111858287A (zh) | 代码性能评价方法及装置、电子设备和存储介质 | |
CN103150250B (zh) | 应用程序性能检测系统和应用程序性能检测方法 | |
CN109656812A (zh) | 数据质量检测方法、装置及存储介质 | |
CN112199293A (zh) | 软件质量评价方法、装置、终端设备及存储介质 | |
WO2022121337A1 (zh) | 数据探查方法、装置、电子设备以及存储介质 | |
EP2113874A1 (en) | Method and system for monitoring computer-implemented processes | |
CN111860698A (zh) | 确定学习模型的稳定性的方法和装置 | |
CN110688063A (zh) | 一种Raid的慢盘筛选方法、装置、设备及介质 | |
CN111858377B (zh) | 测试脚本的质量评价方法、装置、电子设备及存储介质 | |
CN110765005B (zh) | 软件可靠性评估方法和装置 | |
CN116401113B (zh) | 一种异构众核架构加速卡的环境验证方法、装置及介质 | |
CN108733707A (zh) | 一种确定搜索功能稳定性及装置 | |
CN117648252A (zh) | 软件应用的功能测试方法、装置、电子设备及存储介质 | |
CN108228445B (zh) | 虚拟机能耗的测试方法以及装置 | |
CN111274112A (zh) | 应用程序压测方法、装置、计算机设备和存储介质 | |
CN112966971B (zh) | 一种项目工作量评估方法和装置 | |
CN114741291A (zh) | 一种漏洞信息自动提交的方法、装置、设备及介质 | |
CN114942905A (zh) | 一种迁移数据验证方法、装置、设备和存储介质 | |
CN114090357A (zh) | 一种硬盘性能测试方法、装置、电子设备及存储介质 | |
CN113342634A (zh) | 软件质量评估的方法和装置 | |
CN117951529B (zh) | 用于硬盘数据故障预测的样本获取方法、装置、设备 |
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 |