The invention provides a method and a device for obtaining the execution time of a function, the method comprises: obtaining a first call request, wherein the first call request is used to call the first target application program interface API, the first target API includes a time detection module and a target function to be executed, the time detection module is in a state of prohibiting execution before the first target API is called, and the time The detection module is used to obtain the execution time of the target function; in response to the first call request, the state of the time detection module is set to the state allowed to be executed; the time detection module and the target function are executed to obtain the execution time of the target function. It solves the technical problem of API application performance degradation when API time-consuming data is analyzed by determinate analyzer cprofile and all existing API interfaces need to be opened.
【技术实现步骤摘要】
函数执行时间的获取方法及装置
本专利技术涉及应用程序接口API性能测试领域,具体而言,涉及一种函数执行时间的获取方法及装置。
技术介绍
在现有技术中,通过有两种方式获取应用程序接口API(ApplicationProgrammingInterface)的耗时性能数据。其中,方式一:通过打印API接口耗时日志方式,方式二:通过确定性分析器cProfile分析API接口耗时数据。需要说明的是,采用方式一获取API接口的耗时性能数据,如图1所示,通过打印API接口耗时日志方式获取API接口的耗时性能数据的示意图。采用方式一,开发者需要在原有的API接口中插入对应的执行时间代码,通过粗略的将接口代码进行切割成不同的模块,然后得出各个模块的耗时信息,最后将这些信息打印到日志,或者是通过接口返回。即方式一中:需要针对特定的接口做出插入datetime的代码块的工作,保证不了代码的纯净,并且需要阅读源代码。采用方式二,通过cProfile分析API接口耗时性能数据,如图2所示,通过cProfile分析API接口耗时数据的示意图。采用方式二,通过cProfile方案分析API接口耗时数据,可以达到保证API接口代码的纯净,减少入侵的目的,但是方式二中,如果对所有的API接口都开启,将会严重影响应用的使用性能。通过上述的说明可以知道,目前方案主要存在以下几个问题:需要阅读源代码,并且对代码进行模块化分割,并对源代码做出一定的评估,对耗时比较长的模块可能需要再次深入的分割和分析。2)入侵源代码,因为对API接口中 ...
【技术保护点】
1.一种函数执行时间的获取方法,其特征在于,包括:/n获取第一调用请求,其中,所述第一调用请求用于调用第一目标应用程序接口API,所述第一目标API中包括时间检测模块和待执行的目标函数,所述时间检测模块在所述第一目标API被调用前处于禁止被执行的状态,所述时间检测模块用于获取所述目标函数的执行时间;/n响应所述第一调用请求将所述时间检测模块的状态设置为允许被执行的状态;/n执行所述时间检测模块和所述目标函数,得到所述目标函数的执行时间。/n
【技术特征摘要】 【专利技术属性】
1.一种函数执行时间的获取方法,其特征在于,包括:
获取第一调用请求,其中,所述第一调用请求用于调用第一目标应用程序接口API,所述第一目标API中包括时间检测模块和待执行的目标函数,所述时间检测模块在所述第一目标API被调用前处于禁止被执行的状态,所述时间检测模块用于获取所述目标函数的执行时间;
响应所述第一调用请求将所述时间检测模块的状态设置为允许被执行的状态;
执行所述时间检测模块和所述目标函数,得到所述目标函数的执行时间。
2.根据权利要求1所述的方法,其特征在于,在执行所述时间检测模块和所述目标函数之后,所述方法还包括:
将所述第一目标API中的所述时间检测模块的状态设置为所述禁止被执行的状态。
3.根据权利要求1所述的方法,其特征在于,在所述获取第一调用请求之前,所述方法还包括:
在第一初始API中增加所述时间检测模块,得到所述第一目标API,其中,所述第一初始API中包括所述待执行的目标函数。
4.根据权利要求1所述的方法,其特征在于,执行所述时间检测模块和所述目标函数,得到所述目标函数的执行时间包括:
在得到所述目标函数的执行时间的过程中,将所述第一目标应用程序接口API中所有目标函数的执行时间生成日志,并将所述日志保存在数据库中。
5.根据权利要求4所述的方法,其特征在于,并保存在数据库中之后,所述方法还包括:
根据所述日志获取所述第一目标API中所有目标函数执行时间超过第一阈值的函数,以及超过第一阈值的函数之间的调用关系;
技术研发人员:柳金山,龚达远,王照江,陆正发,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。