性能监视方法和装置制造方法及图纸

技术编号:14849046 阅读:60 留言:0更新日期:2017-03-17 22:50
本申请提供了性能监视方法和装置。本发明专利技术中,通过针对函数编写监视脚本,在调用函数时,并非直接调用函数,而是先调用函数的监视脚本,以开启函数的监视,之后,在监视脚本被调用完毕时,继续调用函数,即实现了函数的监视,因为函数是描述性能的,也就相当于实现了性能的监视。通过该监视,能够快速定位出导致性能瓶颈的问题,效率大大提高。

【技术实现步骤摘要】

本申请涉及计算机技术,特别涉及性能监视方法和装置
技术介绍
在大型的程序开发过程中,常常会遇到一些性能瓶颈,比如在高并发的情况下,产生的处理失败如:数据库连接池过低,服务器连接数超过上限,数据库锁控制考虑不足等)、内存泄露如在长时间运行下,内存没有正常释放,发生宕机等、CPU使用偏离如高并发导致CPU使用率过高、日志打印过多等。为保证程序开发的顺利进行,就需要迅速定位出产生性能瓶颈的原因,以提高程序开发的效率。
技术实现思路
本申请提供了性能监视方法和装置,以实现通过自定义方法监视性能,快速定位出影响性能的因素。本申请提供的技术方案包括:一种性能监视方法,该方法包括:确定用户选中的需要监视的函数;利用所述函数对应的监视要求编写监视脚本;在调用所述函数时,先调用所述监视脚本,当所述监视脚本被调用完毕时,继续调用所述函数。一种性能监视装置,该装置包括:确定单元,用于确定用户选中的需要监视的函数;脚本单元,用于利用所述函数对应的监视要求编写监视脚本;控制单元,用于在调用所述函数时,先调用所述监视脚本,当所述监视脚本被调用完毕时,继续调用所述函数。由以上技术方案可以看出,本专利技术中,通过针对函数编写监视脚本,在调用函数时,并非直接调用函数,而是先调用函数的监视脚本,以开启函数的监视,之后,在监视脚本被调用完毕时,继续调用函数,即实现了函数的监视,因为函数是描述性能的,也就相当于实现了性能的监视。通过该监视,能够快速定位出导致性能瓶颈的问题,效率大大提高。附图说明图1为本专利技术提供的方法流程图;图2a为现有技术调用函数的示意图;图2b为本专利技术中调用函数的示意图;图3为本专利技术实施例提供的方法流程图;图4为本专利技术提供的装置结构示意图。具体实施方式为了使本专利技术的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本专利技术进行详细描述。本专利技术提供的方法包括图1所示的流程:参见图1,图1为本专利技术提供的流程图。如图1所示,该流程可包括以下步骤:步骤101,确定用户选中的需要监视的函数。作为本专利技术的一个实施例,在windows开发应用环境中,步骤101确定用户选中的需要监视的函数可包括:从程序数据库(pdb:programdDatabase)文件(file)中读取所有的函数提供给使用者;确定使用者从被提供的函数中选中的需要监视的函数。步骤102,利用所述函数对应的监视要求编写监视脚本。该监视脚本中描述了函数对应的监视要求,比如监视函数被运行的次数、时间等。步骤103,在调用所述函数时,先调用所述监视脚本,当所述监视脚本被调用完毕时,继续调用所述函数。从步骤103可以看出,当调用函数时,并非直接调用函数,而是先调用函数的监视脚本,以开启函数的监视,之后,在监视脚本被调用完毕时,继续调用函数,图2a至图2b分别示出了现有技术和本专利技术在程序调用函数时的示意图。因为函数是描述性能的,如此,在本专利技术中,函数的监视也就相当于实现了性能的监视,即本专利技术实现了性能监视。至此,完成图1所示的流程。通过图1所示的流程可以看出,本专利技术中,通过针对函数编写监视脚本,在调用函数时,并非直接调用函数,而是先调用函数的监视脚本,以开启函数的监视,之后,在监视脚本被调用完毕时,继续调用函数,即实现了函数的监视,因为函数是描述性能的,也就相当于实现了性能的监视。通过该监视,能够快速定位出导致性能瓶颈的问题,效率大大提高。下面通过一个具体实施例对图1所示流程进行描述:参见图3,图3为本专利技术提供的实施例流程图。如图3所示,该流程可包括以下步骤:步骤301,从pdb文件中读取所有的函数提供给使用者。具体地,步骤301为:以函数的标识为关键字从pdb文件中读取含有该关键字的符号并提供给使用者。步骤302,确定使用者从被提供的函数中选中的需要监视的函数(这里以函数a为例)。需要说明的是,在本专利技术中,函数a只是泛指一个函数,并不具体限定某一个函数。步骤303,利用函数a对应的监视要求编写监视脚本。如上所述,函数,其是描述性能的,很明显,其也具有一定的性能要求,基于此,在步骤303中,利用函数a对应的监视要求编写监视脚本具体为:利用函数a描述的性能所对应的性能要求编写监视脚本。步骤304,将监视脚本编译成机器码。具体地,步骤304中,可通过脚本编译器将监视脚本编译成机器码。当监视脚本编译成机器码时,其在实时监视函数对应的性能时执行效率很高,并且几乎不会为原程序增加任何负担。步骤305,从待监视进程内分配一块内存,将步骤304编译的机器码写入该内存中。步骤306,在调用函数a时,先跳转至内存执行内存中的机器码,以实现所述监视脚本的执行,当内存中的机器码执行完毕后,跳转执行函数a。步骤306是上述步骤103中先调用所述监视脚本,当所述监视脚本被调用完毕时,继续调用所述函数的一个具体实现方式。在步骤306中,跳转至内存执行所述内存中的机器码包括:在函数的开头加入第一跳转(jmp)汇编指令,以跳转至所述内存执行所述内存中的机器码。这里,第一跳转汇编指令中可包含内存的地址信息,基于该地址信息,则可方便跳转至内存执行所述内存中的机器码。在本专利技术中,为保证步骤306中在内存中的机器码执行完毕后,跳转执行函数,可进一步包括:在机器码的最后加入第二jmp汇编指令,以跳转执行函数a;这里,第二jmp汇编指令可包含函数a的地址信息,基于该地址信息,则可方便跳转至函数a。基于此,步骤306中,当内存中的机器码执行完毕后,跳转执行函数a包括:依据执行到的内存中机器码的第二jmp汇编指令跳转执行函数a。这里,当执行到的内存中机器码的第二jmp汇编指令,意味着内存中的机器码执行完毕。至此,完成图3所示的流程。通过图3所示的流程可以看出,本专利技术中,将针对函数编写的监视脚本编译成机器码,通过该机器码能够实时监测函数对应的性能,达到了实时监测性能的目的,并且,根据该性能实时监测能够在性能瓶颈时及时定位出导致性能瓶颈的来源,快速定位出影响性能的因素,提高程序运行效率。以上对本专利技术提供的方法进行了描述,下面对本专利技术提供的装置进行描述:参见图4,图4为本专利技术提供的装置结构图。如图4所示,该装置包括:确定单元,用于确定用户选中的需要监视的函数;脚本本文档来自技高网...

【技术保护点】
一种性能监视方法,其特征在于,该方法包括:确定用户选中的需要监视的函数;利用所述函数对应的监视要求编写监视脚本;在调用所述函数时,先调用所述监视脚本,当所述监视脚本被调用完毕时,继续调用所述函数。

【技术特征摘要】
1.一种性能监视方法,其特征在于,该方法包括:
确定用户选中的需要监视的函数;
利用所述函数对应的监视要求编写监视脚本;
在调用所述函数时,先调用所述监视脚本,当所述监视脚本被调用完毕时,
继续调用所述函数。
2.根据权利要求1所述的方法,其特征在于,所述确定用户选中的需要监
视的函数包括:
从程序数据库pdb文件中读取所有的函数提供给使用者;
确定使用者从被提供的函数中选中的需要监视的函数。
3.根据权利要求1所述的方法,其特征在于,在利用所述函数对应的监视
要求编写监视脚本之后,且在调用所述函数之前,进一步包括:
将所述监视脚本编译成机器码;
从待监视进程内分配一块内存,将所述机器码写入所述内存中;
所述先调用监视脚本,当监视脚本被调用完毕时,继续调用函数包括:
跳转至所述内存执行所述内存中的机器码,以实现所述监视脚本的执行;
当所述内存中的机器码执行完毕后,跳转执行所述函数。
4.根据权利要求3所述的方法,其特征在于,所述跳转至内存执行内存中
的机器码包括:
在所述函数的开头加入第一跳转jmp汇编指令,以跳转至所述内存执行所
述内存中的机器码;
该方法进一步包括:
在所述机器码的最后加入第二jmp汇编指令,以跳转执行所述函数;
所述当内存中的机器码执行完毕后,跳转执行所述函数包括:
依据所述机器码的第二jmp汇编指令跳转执行所述函数。
5.根据权利要求4所述的方法,其特征在于,所述在函数的开头加入第一
跳转jmp汇编指令包括:
使用内联inline挂钩hook中的hook在所述函数的开头加入第一跳转jmp汇
编指令;
所述在机器码的最后加入第二jmp汇编指令包括:
使用内联inline挂钩hook中的hook在所述机器码的最后加入第二jmp汇编
指令。
6.一种性能监视装置,其特征在于,该装置包括:
确定单元,用于确定用户选中的需要监视的函数;...

【专利技术属性】
技术研发人员:高思龙
申请(专利权)人:北京像素软件科技股份有限公司
类型:发明
国别省市:北京;11

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

1