函数运行时间的计算方法、装置、存储介质及电子设备制造方法及图纸

技术编号:38424788 阅读:17 留言:0更新日期:2023-08-07 11:23
本申请提供了一种函数运行时间的计算方法、装置、存储介质及电子设备,涉及计算机技术领域。该方法包括:基于第一采样频率,确定待测试程序中包含的多个第一函数调用链;记录多个第一函数调用链中包含的函数的采样时间戳;基于多个第一函数调用链中包含的函数的采样时间戳,确定函数的运行时长。通过本方案,实现了对待测试程序的运行过程影响较小的情况下,提高分析函数性能的精确度。高分析函数性能的精确度。高分析函数性能的精确度。

【技术实现步骤摘要】
函数运行时间的计算方法、装置、存储介质及电子设备


[0001]本申请涉及计算机
,具体涉及一种函数运行时间的计算方法、装置、存储介质及电子设备。

技术介绍

[0002]利用perf工具对待测试程序进行性能分析时,通常是以函数的调用次数来确定该函数的使用情况,并据此来计算函数在整个待测试程序中的运行占比。
[0003]然而,这种方法不能更好地描述所有函数的执行过程,尤其针对处于休眠期的函数,无法计算函数正确的执行时间以及函数在整个待测试程序中的执行时间占比。

技术实现思路

[0004]有鉴于此,本申请实施例提供了一种函数运行时间的计算方法、装置、存储介质及电子设备。
[0005]第一方面,本申请一实施例提供了一种函数运行时间的计算方法,包括:基于第一采样频率,确定待测试程序中包含的多个第一函数调用链;记录多个第一函数调用链中包含的函数的采样时间戳;基于多个第一函数调用链中包含的函数的采样时间戳,确定函数的运行时长。
[0006]结合第一方面,在第一方面的某些实现方式中,函数运行时间的计算方法还包括:基于第二采样频率,确定待测试程序中包含的多个第二函数调用链,第二采样频率大于第一采样频率;其中,基于多个第一函数调用链中包含的函数的采样时间戳,确定函数的运行时长,包括:对多个第一函数调用链和多个第二函数调用链进行整合,生成至少一个第三函数调用链;基于至少一个第三函数调用链,确定函数的运行时长。
[0007]结合第一方面,在第一方面的某些实现方式中,基于至少一个第三函数调用链,确定函数的运行时长,包括:基于第三函数调用链中包含的函数的采样时间戳,在第三函数调用链中确定函数的首次调用时间;在第三函数调用链中确定函数的退出时间;基于函数的首次调用时间以及函数的退出时间,确定函数的运行时长。
[0008]结合第一方面,在第一方面的某些实现方式中,在第三函数调用链中确定函数的退出时间,包括:从第三函数调用链中确定与函数处于相同的函数调用链以及相同的调用深度的其他函数;基于其他函数的采样时间戳,确定函数的退出时间。
[0009]结合第一方面,在第一方面的某些实现方式中,对多个第一函数调用链和多个第二函数调用链进行整合,生成至少一个第三函数调用链,包括:确定多个第一函数调用链各自的入口函数;基于多个第一函数调用链各自的入口函数,合并多个第一函数调用链,生成至少一个第四函数调用链;将多个第二函数调用链中包含的函数补充至至少一个第四函数调用链,生成至少一个第三函数调用链。
[0010]结合第一方面,在第一方面的某些实现方式中,基于多个第一函数调用链各自的入口函数,合并多个第一函数调用链,生成至少一个第四函数调用链,包括:获取多个第一
函数调用链各自的入口函数中涉及的入口函数;基于多个第一函数调用链各自的入口函数中涉及的入口函数,构建函数调用链主分支;确定函数调用链主分支中的函数调用链扩展分支;将多个第一函数调用链中包含的函数补充至函数调用链主分支和函数调用链扩展分支中的函数节点,生成至少一个第四函数调用链。
[0011]结合第一方面,在第一方面的某些实现方式中,将多个第二函数调用链中包含的函数补充至至少一个第四函数调用链,生成至少一个第三函数调用链,包括:确定多个第二函数调用链各自的入口函数;若第二函数调用链的入口函数在至少一个第四函数调用链中出现,则以与第二函数调用链的入口函数相同的第四函数调用链中的函数为起点,将第二函数调用链中包含的函数补充至至少一个第四函数调用链;若第二函数调用链的入口函数未在至少一个第四函数调用链中出现,则基于第二函数调用链的入口函数,构建函数调用链主分支;基于补充后的至少一个第四函数调用链和函数调用链主分支,生成至少一个第三函数调用链。
[0012]结合第一方面,在第一方面的某些实现方式中,基于第一采样频率,确定待测试程序中包含的多个第一函数调用链,包括:基于第一采样频率,利用perf工具设置定时器的启动时间和中断时间;在定时器的中断时间,读取当前处理器中的通用寄存器值;若基于通用寄存器值确定当前调度函数属于待测试程序,则将当前调度函数的函数信息存储至缓冲区;读取缓冲区中的数据,确定待测试程序中包含的多个第一函数调用链。
[0013]结合第一方面,在第一方面的某些实现方式中,记录多个第一函数调用链中包含的函数的采样时间戳,包括:基于定时器的启动时间和中断时间,记录多个第一函数调用链中包含的函数的采样时间戳。
[0014]结合第一方面,在第一方面的某些实现方式中,函数运行时间的计算方法还包括:确定以第一采样频率对待测试程序进行采样时,待测试程序的运行时长;基于函数的运行时长以及待测试程序的运行时长,确定函数占待测试程序的运行时长的比例。
[0015]结合第一方面,在第一方面的某些实现方式中,函数运行时间的计算方法还包括:确定函数对应的子函数的运行时长;基于函数对应的子函数的运行时长以及函数的运行时长,确定函数在不调用子函数时的运行时长。
[0016]第二方面,本申请一实施例提供了一种函数运行时间的计算装置,包括:第一确定模块,用于基于第一采样频率,确定待测试程序中包含的多个第一函数调用链;记录模块,用于记录多个第一函数调用链中包含的函数的采样时间戳;第二确定模块,用于基于多个第一函数调用链中包含的函数的采样时间戳,确定函数的运行时长。
[0017]第三方面,本申请一实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序用于执行第一方面提及的方法。
[0018]第四方面,本申请一实施例提供了一种电子设备,该电子设备包括:处理器;用于存储处理器可执行指令的存储器;该处理器用于执行第一方面提及的方法。
[0019]在本实施例中,通过合理地设置第一采样频率,可保证收集到较为完整的第一函数调用链。在利用第一采样频率对待测试程序进行采样时,同时记录第一函数调用链中函数的采样时间戳,能够进一步确定函数的运行时长,且不会对被测试程序的运行过程产生影响,便于技术人员分析函数的性能、以及对函数进行优化分析。
附图说明
[0020]通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
[0021]图1所示为本申请一示例性实施例提供的函数运行时间的计算方法的流程示意图。
[0022]图2所示为本申请一示例性实施例提供的确定函数的运行时长的流程示意图。
[0023]图3所示为本申请另一示例性实施例提供的确定函数的运行时长的流程示意图。
[0024]图4所示为本申请一示例性实施例提供的确定函数的退出时间的流程示意图。
[0025]图5所示为本申请一示例性实施例提供的生成第三函数调用链的流程示意图。
[0026]图6本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种函数运行时间的计算方法,其特征在于,包括:基于第一采样频率,确定待测试程序中包含的多个第一函数调用链;记录所述多个第一函数调用链中包含的函数的采样时间戳;基于所述多个第一函数调用链中包含的函数的采样时间戳,确定所述函数的运行时长。2.根据权利要求1所述的方法,其特征在于,还包括:基于第二采样频率,确定所述待测试程序中包含的多个第二函数调用链,所述第二采样频率大于所述第一采样频率;其中,所述基于所述多个第一函数调用链中包含的函数的采样时间戳,确定所述函数的运行时长,包括:对所述多个第一函数调用链和所述多个第二函数调用链进行整合,生成至少一个第三函数调用链;基于所述至少一个第三函数调用链,确定所述函数的运行时长。3.根据权利要求2所述的方法,其特征在于,所述基于所述至少一个第三函数调用链,确定所述函数的运行时长,包括:基于所述第三函数调用链中包含的所述函数的采样时间戳,在所述第三函数调用链中确定所述函数的首次调用时间;在所述第三函数调用链中确定所述函数的退出时间;基于所述函数的首次调用时间以及所述函数的退出时间,确定所述函数的运行时长。4.根据权利要求3所述的方法,其特征在于,所述在所述第三函数调用链中确定所述函数的退出时间,包括:从所述第三函数调用链中确定与所述函数处于相同的函数调用链以及相同的调用深度的其他函数;基于所述其他函数的采样时间戳,确定所述函数的退出时间。5.根据权利要求2至4任一项所述的方法,其特征在于,所述对所述多个第一函数调用链和所述多个第二函数调用链进行整合,生成至少一个第三函数调用链,包括:确定所述多个第一函数调用链各自的入口函数;基于所述多个第一函数调用链各自的入口函数,合并所述多个第一函数调用链,生成至少一个第四函数调用链;将所述多个第二函数调用链中包含的函数补充至所述至少一个第四函数调用链,生成所述至少一个第三函数调用链。6.根据权利要求5所述的方法,其特征在于,所述基于所述多个第一函数调用链各自的入口函数,合并所述多个第一函数调用链,生成至少一个第四函数调用链,包括:获取所述多个第一函数调用链各自的入口函数中涉及的入口函数;基于所述多个第一函数调用链各自的入口函数中涉及的入口函数,构建函数调用链主分支;确定所述函数调用链主分支中的函数调用链扩展分支;将所述多个第一函数调用链中包含的函数补充至所述函数调用链主分支和所述函数调用链扩展分支中的函数节点,生成所述至少一个第四函数调用链。
7.根据权利要求5所述的方法,其特征在于,所述将所述多个第二函数调用链中包含的函数补充至所述至少一...

【专利技术属性】
技术研发人员:龙国润黄晨
申请(专利权)人:黑芝麻智能科技有限公司
类型:发明
国别省市:

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

1