一种时长获取方法和装置制造方法及图纸

技术编号:13945039 阅读:54 留言:0更新日期:2016-10-30 02:08
本发明专利技术实施例公开了一种时长获取方法和装置;本发明专利技术实施例采用在开始执行应用程序内部的目标函数时跳转至执行该应用程序外部的第一时间获取函数,以获取该目标函数的开始执行时间,然后,在执行完该第一时间获取函数时跳转至执行该目标函数,在执行完该目标函数时跳转至执行该应用程序外部的第二时间获取函数,以获取该目标函数的执行完成时间,根据该开始执行时间和该执行完成时间获取该目标函数的执行时长;该方案可以提高函数时长耗时统计的准确性。

【技术实现步骤摘要】

本专利技术涉及计算机
,具体涉及一种时长获取方法和装置
技术介绍
随着移动终端技术的日益发展,应用程序数量也呈现出爆炸式增长趋势。应用程序开发者提供各种各样的应用程序,比如,娱乐、游戏、社交等类型的应用程序。对于应用程序开发者来说,为了保证应用程序的质量,需要对应用程序的性能进行监测,然后,基于监测结果来完善应用程序,以提高其运行质量;比如,需要统计应用程序中函数的执行耗时(即执行时长)、检测应用程序中函数之间的调用关系等等。现有技术中,统计函数的执行耗时需要在该函数的执行前后埋点,在运行过程中计算函数的执行耗时;具体地,预先在应用程序内部设置针对目标函数的两个信息收集函数,一个信息收集函数用于收集函数执行前的函数信息,比如收集函数执行前的时间信息、函数调用信息以及其他函数相关信息,另一个信息收集函数用于收集函数执行完成后的函数信息,比如,收集函数执行完成后的时间信息、函数调用信息以及其他函数相关信息,这样在运行应用程序,也即运行应用程序中的函数时,可以通过这两个信息收集函数来分别收集函数执行前、执行后的时间信息,从而获取该函数的执行耗时(执行时长)。在对现有技术的研究和实践过程中,本专利技术的专利技术人发现,由于现有技术统计函数的执行耗时,需要执行应用程序内部相应的信息收集函数,其会影响应用程序的性能,因此,会导致统计的函数执行耗时不准确,函数执行耗时统计的准确性比较低。
技术实现思路
本专利技术实施例提供一种时长获取方法和装置,可以提高函数耗时统计的准确性。本专利技术实施例提供一种时长获取方法,包括:在开始执行应用程序内部的目标函数时,跳转至执行所述应用程序外部的第一时间获取函数,以获取所述目标函数的开始执行时间;在执行完所述第一时间获取函数时,跳转至执行所述目标函数;在执行完所述目标函数时,跳转至执行所述应用程序外部的第二时间获取函数,以获取所述目标函数的执行完成时间;根据所述开始执行时间和所述执行完成时间获取所述目标函数的执行时长。相应的,本专利技术实施例还提供一种时长获取装置,包括:第一跳转单元,用于在开始执行应用程序内部的目标函数时,跳转至执行所述应用程序外部的第一时间获取函数,以获取所述目标函数的开始执行时间;第二跳转单元,用于在执行完所述第一时间获取函数时,跳转至执行所述目标函数;第三跳转单元,用于在执行完所述目标函数时,跳转至执行所述应用程序外部的第二时间获取函数,以获取所述目标函数的执行完成时间;时长获取单元,用于根据所述开始执行时间和所述执行完成时间获取所述目标函数的执行时长。本专利技术实施例采用在开始执行应用程序内部的目标函数时跳转至执行该应用程序外部的第一时间获取函数,以获取该目标函数的开始执行时间,然后,在执行完该第一时间获取函数时跳转至执行该目标函数,在执行完该目标函数时跳转至执行该应用程序外部的第二时间获取函数,以获取该目标函数的执行完成时间,根据该开始执行时间和该执行完成时间获取该目标函数的执行时长;该方案可以通过应用程序外部的时间获取函数来获取目标函数的开始执行时间以及执行完成时间,然后,基于该开始执行时间以及执行完成时间获取该目标函数的执行耗时,由于该方案通过应用程序外部的时间获取函数来获取时间,不会影响应用程序自身的性能,因此,相对于现有技术而言,可以提高函数耗时统计的准确性。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例一提供的一种时长获取方法的流程意图;图2a是本专利技术实施例二提供的一种时长获取方法的流程图;图2b是本专利技术实施例二提供的一种函数调用示意图;图3是本专利技术实施例三提供的一种时长获取装置的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例提供一种时长获取方法和装置。以下将分别进行详细说明。实施例一、本实施例将从时长获取装置的角度进行描述,该时长获取装置具体可以集成在终端等设备中,该终端具体可以为手机、平板电脑或PC等设备。一种时长获取方法,包括:在开始执行应用程序内部的目标函数时跳转至执行该应用程序外部的第一时间获取函数,以获取该目标函数的开始执行时间,然后,在执行完该第一时间获取函数时跳转至执行该目标函数,在执行完该目标函数时跳转至执行该应用程序外部的第二时间获取函数,以获取该目标函数的执行完成时间,根据该开始执行时间和该执行完成时间获取该目标函数的执行时长。如图1所示,该时长获取方法的流程图具体可以如下:101、在开始执行应用程序内部的目标函数时,跳转至执行该应用程序外部的第一时间获取函数,以获取该目标函数的开始执行时间。其中,应用程序内部的函数指的是:位于应用程序的构成函数集合内的函数,该构成函数集合可以包括多个构成该应用程序的函数;比如,当某个功能函数在应用程序的构成函数集合内,则认为该功能函数为应用程序内部的函数;应用程序外部的函数指的是:位于应用程序的构成函数集合之外的函数,即不在该构成函数集合内的函数,比如,当某个功能函数不在应用程序的构成函数集合内,则认为该函数为应用程序外部的函数。本实施例中,确定开始执行目标函数的方式可以有多种,比如,在执行应用程序内部的目标函数的begin时可确定此时开始执行该目标函数,也即步骤“在开始执行应用程序内部的目标函数时跳转至执行第一时间获取函数”可以包括:在执行应用程序内部目标函数的begin时跳转至执行第一时间获取函数;在实际应用中,确定开始执行目标函数的方式可以根据需求设定,比如,可以设置在调用目标函数的时刻即为开始执行该目标函数的时刻,等等。本实施例的时长获取方法可以在Dalvik(虚拟机)上实施,比如,在需要获取安卓应用程序中函数的执行耗时,可以在Android Dalvik(安卓虚拟机)上应用本实施例方法;也即步骤“在开始执行应用程序内部的目标函数时,跳转至执行该应用程序外部的第一时间获取函数”可以包括:在安卓虚拟机执行应用程序内部的目标函数时,安卓虚拟机跳转执行该应用程序外部的第一时间获取函数。本实施例中,第一时间获取函数位于应用程序外部,该函数用于获取目标函数的开始执行时间,该开始执行时间可以为一个时间戳;其中,该第一时间获取函数可以为用户自定义的函数;具体地,该第一时间获取函数可以用于获取函数标识及其对应的开始执行时间等等。可选地,本实施例中第一时间获取函数可以为终端操作系统中的本地函数,比如安卓系统中的本地(Native)函数。可选地,本实施例中可以采用Hook(钩子)实现跳转执行函数,以提高函数跳转的速度,进而提高函数耗时统计的速度;也即步骤“跳转至执行该应用程序外部的第一时间获取函数”可以包括:通过第一钩子函数跳转至执行该应用程序外部的第一时间获取函数。具体地,本实施例可以通过钩子函数修改函数执行指令来实现函数跳转;比如可以在动态库执行内部函本文档来自技高网...

【技术保护点】
一种时长获取方法,其特征在于,包括:在开始执行应用程序内部的目标函数时,跳转至执行所述应用程序外部的第一时间获取函数,以获取所述目标函数的开始执行时间;在执行完所述第一时间获取函数时,跳转至执行所述目标函数;在执行完所述目标函数时,跳转至执行所述应用程序外部的第二时间获取函数,以获取所述目标函数的执行完成时间;根据所述开始执行时间和所述执行完成时间获取所述目标函数的执行时长。

【技术特征摘要】
1.一种时长获取方法,其特征在于,包括:在开始执行应用程序内部的目标函数时,跳转至执行所述应用程序外部的第一时间获取函数,以获取所述目标函数的开始执行时间;在执行完所述第一时间获取函数时,跳转至执行所述目标函数;在执行完所述目标函数时,跳转至执行所述应用程序外部的第二时间获取函数,以获取所述目标函数的执行完成时间;根据所述开始执行时间和所述执行完成时间获取所述目标函数的执行时长。2.如权利要求1所述的时长获取方法,其特征在于,所述跳转至执行所述应用程序外部的第一时间获取函数的步骤具体包括:通过第一钩子函数跳转至执行所述应用程序外部的第一时间获取函数;所述跳转至执行所述应用程序外部的第二时间获取函数的步骤具体包括:通过第二钩子函数跳转至执行所述应用程序外部的第二时间获取函数。3.如权利要求2所述的时长获取方法,其特征在于,所述通过第一钩子函数跳转至执行所述应用程序外部的第一时间获取函数的步骤具体包括:获取第一函数执行指令;通过第一钩子函数对所述第一函数执行指令进行修改,以使得所述第一函数执行指令指示执行所述应用程序外部的所述第一时间获取函数;根据所述第一函数指令跳转至执行所述第一时间获取函数。4.如权利要求3所述的时长获取方法,其特征在于,所述通过第一钩子函数对所述第一函数执行指令进行修改的步骤具体包括:通过第一钩子函数将所述第一函数执行指令指向的函数地址修改为所述第一时间获取函数的函数地址。5.如权利要求2所述的时长获取方法,其特征在于,所述通过第二钩子函数跳转至执行所述应用程序外部的第二时间获取函数的步骤具体包括:获取第二函数执行指令;通过第二钩子函数对所述第二函数执行指令进行修改,以使得所述第一函数执行指令指示执行所述应用程序外部的所述第二时间获取函数;根据所述第二函数指令跳转至执行所述第一时间获取函数。6.如权利要求5所述的时长获取方法,其特征在于,所述通过第二钩子函数对所述第二函数执行指令进行修改的步骤具体包括:通过第二钩子函数将所述第二函数执行指令指向的函数地址修改为所述第二时间获取函数的函数地址。7.如权利要求1所述的时长获取方法,其特征在于,所述跳转至执行所述应用程序外部的第一时间获取函数,以获取所述目标函数的开始执行时间的步骤具体包括:跳转至执行所述应用程序外部的第一时间获取函数,以获取所述目标函数的开始执行时间并将所述开始执行时间写入共享内存中;所述跳转至执行所述应用程序外部的第二时间获取函数,以获取所述目标函数的执行完成时间的步骤具体包括:跳转至执行所述应用程序外部的第二时间获取函数,以获取所述目标函数的执行完成时间并将所述执行完成时间写入所述共享内存中;所述根据所述开始执行时间和所述执行完成时间获取所述目标函数的执行时长的步骤具体包括:从所述共享内存中提取所述开始执行时间和所述执行完成时间;根据所述开始执行时间和所述...

【专利技术属性】
技术研发人员:王俊俊王波彭毕雨
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

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

1