代码的性能分析方法、装置、电子设备及计算机可读介质制造方法及图纸

技术编号:38364824 阅读:7 留言:0更新日期:2023-08-05 17:32
本公开涉及一种代码的性能分析方法、装置、电子设备及计算机可读介质,属于计算机技术领域。该方法包括:确定目标分析代码中的所有脚本函数中包含的各个操作码对应的性能开销权重;在运行所述目标分析代码的同时,根据各个所述操作码对应的性能开销权重,确定各个所述脚本函数运行时的性能开销;根据各个所述脚本函数运行时的性能开销对所述目标分析代码进行性能分析。本公开通过给不同的操作码提前分配对应的性能开销权重,可以降低性能分析过程产生的开销。过程产生的开销。过程产生的开销。

【技术实现步骤摘要】
代码的性能分析方法、装置、电子设备及计算机可读介质


[0001]本公开涉及计算机
,具体而言,涉及一种代码的性能分析方法、代码的性能分析装置、电子设备及计算机可读介质。

技术介绍

[0002]在软件开发的过程中,经常需要使用工具分析代码的性能热点。常规性能分析工具以执行时间(CPU tick)来衡量函数开销,同时记录函数调用关系。上述常规方法虽然结果准确,但是性能分析的过程也会产生较大的CPU开销,不适合在高负载的服务器中执行。
[0003]鉴于此,本领域亟需一种代码的性能分析方法,能够降低性能分析过程产生的开销,使其能够在高负载的服务器中运行。
[0004]需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0005]本公开的目的在于提供一种代码的性能分析方法、代码的性能分析装置、电子设备及计算机可读介质,进而至少在一定程度上能够降低性能分析过程产生的开销,使其能够在高负载的服务器中运行。
[0006]根据本公开的第一个方面,提供一种代码的性能分析方法,包括:
[0007]确定目标分析代码中的所有脚本函数中包含的各个操作码对应的性能开销权重;
[0008]在运行所述目标分析代码的同时,根据各个所述操作码对应的性能开销权重,确定各个所述脚本函数运行时的性能开销;
[0009]根据各个所述脚本函数运行时的性能开销对所述目标分析代码进行性能分析。
>[0010]根据本公开的第二方面,提供一种代码的性能分析装置,包括:
[0011]操作码权重确定模块,用于确定目标分析代码中的所有脚本函数中包含的各个操作码对应的性能开销权重;
[0012]函数开销确定模块,用于按照预设执行次数运行目标分析代码中的所有脚本函数中包含的各个操作码,得到各个所述操作码对应的总执行时间;
[0013]代码性能分析模块,用于根据各个所述脚本函数运行时的性能开销对所述目标分析代码进行性能分析。
[0014]根据本公开的第三方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的代码的性能分析方法。
[0015]根据本公开的第四方面,提供一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的代码的性能分析方法。
[0016]本公开示例性实施例可以具有以下有益效果:
[0017]本公开示例实施方式的代码的性能分析方法中,通过在进行性能分析之前,提前
确定好目标分析代码中的所有脚本函数中包含的各个操作码对应的性能开销权重,然后在运行目标分析代码的同时,根据各个操作码对应的性能开销权重,确定各个脚本函数运行时的性能开销,最后根据各个脚本函数运行时的性能开销对目标分析代码进行性能分析。本公开示例实施方式中的代码的性能分析方法,通过给不同的操作码提前分配对应的性能开销权重,在进行性能分析时,直接根据各个操作码对应的性能开销权重来衡量每个函数运行时的性能开销,不维护函数的调用链,也无需记录每一步的执行时间,能够降低性能分析过程产生的开销,使其能够在高负载的服务器中运行,虽然牺牲了一些准确性,但是能够以较小的开销实现完整的性能分析,大致反映出程序中的性能热点。
[0018]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0019]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1示出了本公开示例实施方式的代码的性能分析方法的流程示意图;
[0021]图2示出了本公开示例实施方式的确定操作码对应的性能开销权重的流程示意图;
[0022]图3示出了本公开示例实施方式的确定各个脚本函数运行时的性能开销的流程示意图;
[0023]图4示出了本公开示例实施方式的确定存在调用关系的脚本函数运行时的性能开销的流程示意图;
[0024]图5示出了本公开示例实施方式的代码的性能分析装置的框图;
[0025]图6示出了适于用来实现本公开实施方式的电子设备的计算机系统的结构示意图。
具体实施方式
[0026]现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
[0027]此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功
能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0028]本示例实施方式首先提供了一种代码的性能分析方法。参考图1所示,上述代码的性能分析方法可以包括以下步骤:
[0029]步骤S110.确定目标分析代码中的所有脚本函数中包含的各个操作码对应的性能开销权重。
[0030]步骤S120.在运行目标分析代码的同时,根据各个操作码对应的性能开销权重,确定各个脚本函数运行时的性能开销。
[0031]步骤S130.根据各个脚本函数运行时的性能开销对目标分析代码进行性能分析。
[0032]本公开示例实施方式的代码的性能分析方法中,通过在进行性能分析之前,提前确定好目标分析代码中的所有脚本函数中包含的各个操作码对应的性能开销权重,然后在运行目标分析代码的同时,根据各个操作码对应的性能开销权重,确定各个脚本函数运行时的性能开销,最后根据各个脚本函数运行时的性能开销对目标分析代码进行性能分析。本公开示例实施方式中的代码的性能分析方法,通过给不同的操作码提前分配对应的性能开销权重,在进行性能分析时,直接根据各个操作码对应的性能开销权重来衡量每个函数运行时的性能开销,不维护函数的调用链,也无需记录每一步的执行时间,能够降低性能分析过程产生的开销,使其能够在高负载的服务器中运行,虽然牺本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种代码的性能分析方法,其特征在于,包括:确定目标分析代码中的所有脚本函数中包含的各个操作码对应的性能开销权重;在运行所述目标分析代码的同时,根据各个所述操作码对应的性能开销权重,确定各个所述脚本函数运行时的性能开销;根据各个所述脚本函数运行时的性能开销对所述目标分析代码进行性能分析。2.根据权利要求1所述的代码的性能分析方法,其特征在于,所述确定目标分析代码中的所有脚本函数中包含的各个操作码对应的性能开销权重,包括:按照预设执行次数运行目标分析代码中的所有脚本函数中包含的各个操作码,得到各个所述操作码对应的总执行时间;根据各个所述操作码对应的总执行时间之间的比值,确定各个所述操作码对应的性能开销权重。3.根据权利要求1所述的代码的性能分析方法,其特征在于,所述根据各个所述操作码对应的性能开销权重,确定各个所述脚本函数运行时的性能开销,包括:若所述脚本函数的调用形式为非尾调用,则在执行所述脚本函数之前,根据各个所述操作码对应的性能开销权重,获取当前已执行所有函数对应的第一累计性能开销;在所述脚本函数返回之后,根据各个所述操作码对应的性能开销权重,获取包含所述脚本函数在内的已执行所有函数对应的第二累计性能开销;根据所述第二累计性能开销和所述第一累计性能开销之间的差值,得到所述脚本函数运行时的性能开销。4.根据权利要求3所述的代码的性能分析方法,其特征在于,所述方法还包括:若所述脚本函数与其他函数之间存在调用关系,则在所述脚本函数返回时,获取所述脚本函数中的所有调用函数对应的性能开销;根据所述脚本函数运行时的性能开销,以及所述脚本函数中的所有调用函数对应的性能开销,确定所述脚本函数的实际性能...

【专利技术属性】
技术研发人员:张伟智
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1