基于目标机器的程序性能分析方法

文档序号:6380733阅读:166来源:国知局
专利名称:基于目标机器的程序性能分析方法
技术领域
本发明涉及软件测试技术,特别涉及一种基于目标机器的程序性能分析方法。
背景技术
并行程序的性能测试工具主要用于监测并行程序的性能参数,诸如执行时间、调用次数、资源利用等,为并行程序的进一步优化、并行算法质量的提高、以及系统硬件的改进提供依据。
然而,现有技术中,通过分析并行程序的性能参数,进而对并行程序的性能进行的定性描述的方法仍十分欠缺。另外,随着并行程序规模的不断膨胀,性能数据的数量越来越多。随之,分析这些海量性能数据的难度也越来越大。
一般来说,一个并行程序最终将通过一个目标机器来实际执行,以实现用户的指定功能。如果在实际执行所述并行程序之前,没有对所述并行程序的性能参数进行分析,以实现对所述并行程序性能参数的改进和优化,后续所述并行程序将可能在目标机器中占用过多内存、占用过大带宽,产生过大通讯延时、从而导致执行能力低,甚至无法执行的情况。
因此,有待提出一种基于目标机器的程序性能分析方法,针对目标机器对待分析程序进行分析,以找出待分析程序中存在的性能瓶颈,从而实现对待分析程序的改进和优化。发明内容
本发明解决的问题是提出一种基于目标机器的程序性能分析方法,针对目标机器对待分析程序进行分析,以找出待分析程序中存在的性能瓶颈,从而实现对待分析程序的改进和优化。
为解决上述问题,本发明的实施例提供了一种基于目标机器的程序性能分析方法,所述方法包括执行待分析程序,获取待分析程序中时间热点的与性能指标相关的特征数据,所述性能指标是基于目标机器和样本程序包而选定的;获取与所述性能指标对应的性能描述标准,所述性能描述标准是针对所述目标机器和样本程序包确定的参考数据;以及比对所述特征数据和所述性能描述标准,以获得所述待分析程序针对所述目标机器的性能瓶颈。
可选地,所述时间热点的定位方法为在所述待分析程序执行过程中,通过对所述待分析程序中包含的各个函数的时间消耗进行监测和统计,找出整个程序执行过程中消耗时间超过预定标准的函数部分,并将其定位为所述待分析程序的时间热点。
可选地,获取待分析程序中时间热点的与性能指标相关的特征数据的方法包括 根据所述性能指标设铬与所述时间热点中计算行为、访存行为、和通信行为相关联的计数器;以及分析所述计数器收集和统计的数据,以获得所述时间热点与所述性能指标相关的特征数据。
可选地,获取所述性能描述标准的方法包括从所述样本程序包中筛选出与所述待分析程序类型接近的样本程序;获得所述样本程序的与所述性能指标相关的特征数据;以及根据目标机器的特征信息分析所述样本程序的与所述性能指标相关的特征数据,以确定与所述性能指标相关的性能描述标准。可选地,获取所述性能描述标准的方法包括通过分析所述样本程序包中的样本程序建立针对所述目标机器的程序类型和参考特征数据之间的数据关系模型;将所述待分析程序的类型输入所述数据关系模型;以及根据目标机器的特征信息分析所述数据关系模型数据输出的参考特征数据,以确定与所述性能指标相关的性能描述标准。可选地,通过比对所述特征数据和所述性能描述标准,以获得所述待分析程序针对所述目标机器的性能瓶颈的方法包括通过比对所述特征数据和所述性能描述标准,以找出偏离所述性能描述标准的特征数据;以及分析偏离所述性能描述标准的特征数据,以获得所述待分析程序针对所述目标机器的性能瓶颈。可选地,所述基于目标机器的程序性能分析方法还包括通过分析所述待分析程序的性能瓶颈信息,以获得所述待分析程序的性能描述;以及通过分析所述待分析程序的性能描述信息,以获得所述待分析程序中性能瓶颈的优化建议。可选地,通过分析所述待分析程序的性能描述信息,以获得所述待分析程序中性能瓶颈的优化建议的方法包括根据经验库分析所述待分析程序的性能描述,以获得所述待分析程序中性能瓶颈的优化建议。可选地,所述样本程序包包含具有参考意义的高效样本程序。与现有技术相比,本发明的实施例具有以下优点在本发明的实施例中,首先,所述性能指标是针对目标机器而选定的,充分考虑到了目标机器对程序性能的影响,因此,能够有针对性地找出,对特定目标机器而言所述待分析程序的中需要被重视的特征参数,并将其选定为性能指标。其次,所述性能描述标准是根据目标机器和样本数据包确定出的能使程序在目标机器获得理想性能的一个参照标准,在确定所述参照标准时,也有考虑到目标机器的影响因素,使所确定的性能描述标准更具有参照意义。另外,通过比对所述特征数据和所述性能描述标准,以获得所述待分析程序针对所述目标机器的性能瓶颈,使得用户对待分析程序有一个比较直观和深刻的认识,从而使得用户能够针对所述性能瓶颈采取相关优化措施。


图I是本发明一实施例中基于目标机器的程序性能分析方法的流程图;图2是本发明一实施例中基于目标机器的程序性能分析方法中各要素之间的关系不意图;图3是本发明一实施例中获取性能描述标准的方法流程图;图4是本发明另一实施例中获取性能描述标准的方法流程图;图5是本发明一实施例中程序类型和参考特征数据之间的数据关系模型的示意图。
具体实施方式
经研究发明人发现,同一个并行程序在不同目标机器上执行后,所出现的性能问题是不一样的,也就说不同目标机器由于其软硬件配铬的不同,对同一类型程序的性能参数要求可能是不相同的。因此,如果在对并行程序的性能参数进行分析的时候,没有考虑到目标机器的特征因素,后续在执行所述并行程序时,所述并行程序和目标机器之间可能出现不协调的状况。从而导致执行能力低,甚至出现程序无法执行的情况。
针对上述问题,本发明的实施例提供了一种基于目标机器的程序性能分析方法。 图I为本发明一实施例中基于目标机器的程序性能分析方法的流程图。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式
做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,因此本发明不受下面公开的具体实施例的限制。
首先,请参考图1,执行步骤SI,执行待分析程序,获取待分析程序中时间热点的与性能指标相关的特征数据。
在本发明的实施例中,所述时间热点的定位方法为在所述待分析程序执行过程中,通过对所述待分析程序中包含的各个函数的时间消耗进行监测和统计,找出整个程序执行过程中消耗时间超出预定标准的函数部分,并将其定位为所述待分析程序的时间热点。另外,在本发明的实施例中,所述时间热点可以为一个或者多个。
在本发明的一个实施例中,所述时间热点也可以通过多次执行所述待分析程序来获得。另外,在所述时间热点定位的过程中,可以逐步获取整个待分析程序,某个进程或线程,某个函数,某个基本块或某个程序行的执行时间。
需要说明的是,如图2所示,所述性能指标是基于目标机器和样本程序包而选定的,所述样本程序包包含大量具有参考意义的高效样本程序。
首先,所述性能指标是根据所述样本数据包所包含的样本程序的特征数据中提取出来的,能够反映程序的性能的关键特征参数。
具体来说,针对一个具体的程序实例,反映其性能的特征参数很多,例如,程序执行的时间、函数调用的次数和通信占用的比例等。虽然这些特征参数都能够在一定的意义上反映程序运行的内部特征,但是,在本发明的实施例中,只选择那些对待分析程序的性能瓶颈定位产生关键作用的、且具有重要分析意义的特征参数作为性能指标。
其次,如前所述,目标机器是影响程序执行的重要因素之一,同样的代码在不同的目标机器上的执行结果可能大相径庭,不同的目标机器对同一代码的性能参数要求也可能不尽相同。因此,所述性能指标的选择需要考虑到目标机器的特征因素,例如,硬件配置,系统架构等。在本发明的实施例中,可以针对不同的目标机器,选择不同的性能指标。
具体地,在本发明的实施例中,获取所述待分析程序中时间热点的与性能指标相关的特征数据的方法可以包括根据所述性能指标设置与所述时间热点中计算行为、访存行为、和通信行为相关联的计数器;以及分析所述计数器收集和统计的数据,以获得所述时间热点与所述性能指标相关的特征数据。例如,在本发明的一实施中,所述性能指标包括文件读写带宽,通过设铬计数器获得的与文件读写带宽相关的特征数据为300M/S。
接着,请继续参考图1,执行步骤S2,获取与所述性能指标对应的性能描述标准, 所述性能描述标准是针对所述目标机器和样本程序包确定的参考数据。
请结合图2,在本发明的一些实施例中,获取所述性能描述标准的方法包括S201a、S202a、和 S203a。首先,请参考图3,执行S201a,从所述样本程序包中筛选出与所述待分析程序类型接近的样本程序。在本发明的实施例中,所述样本程序包包含大量具有参考意义的高效样本程序,且所述样本程序包中的样本程序按照程序类型进行分类,因此,可以通过筛选找出所述样本程序包中与所述待分析程序类型接近的具有参考意义的高效样本程序。接着,请参考图3,执行S202a,获得与待分析程序类型接近的样本程序的与所述性能指标相关的特征数据。由于所述与待分析程序类型接近的样本程序是根据考察和研究选定的高效程序,因此,其与性能指标相关的特征数据对后续分析待分析程序的性能具有重要类比和参照意义。接着,请参考图3,执行S203a,以及根据目标机器的特征信息分析所述样本程序的与所述性能指标相关的特征数据,以确定与所述性能指标相关的性能描述标准。在本发明的实施例中,所述目标机器的特征信息包括目标机器影响程序执行的相关软硬件配置信息,如内存大小,网络带宽、主频大小、操作系统类型等。如前所述不同的目标机器对同一类程序的特征数据的要求可能不同,因此,需要根据目标机器的特征信息对上述具有参照意义的样本程序的特征数据做一些调整,使其更具有参照价值。在本发明的实施例中,确定所述性能描述指标时,还可以分析所述样本程序的与所述性能指标相关的特征数据是否符合程序编写的普遍规律,所述程序编写的普遍规律包含程序编写的格式和规范,例如函数调用关系的规范等。另外,在本发明的实施例中,确定所述性能描述指标时,还可以参考资深程序员的编程经验,从而更快地为程序分析提供线索。所述资深程序员的经验可以存储在一个经验库中,由于资深程序员了解程序中各方面参数的普遍规律,从而能够更好地总结出正常情况下用于描述程序执行各个方面的具有参照意义的数据。所述性能描述标准是根据上述步骤确定出来的能使程序在目标机器获得理想性能的一个参照标准。请结合图2,在本发明的另一些实施例中,获取所述性能描述标准的方法包括S201b、S202b、和 S203b。首先,请参考图4和图5,执行S20 Ib,通过分析所述样本程序包中的样本程序建立程序类型和参考特征数据之间的数据关系模型。在本发明实施例中,所述样本程序包包含大量具有参考意义的高效样本程序,和S201a不同的是,无需将所述样本程序包中的样本程序进行分类,可以收集大量的所述样本程序,统计和分析所述样本程序的程序类型和特征数据之间的关系,从而建立程序类型和参考特征数据之间的数据关系模型。接着,请参考图4和图5,执行S202b,将所述待分析程序的类型输入所述数据关系模型,使得后续所述数据关系模型数据输出参考特征数据。接着,请参考图4和图5,执行S203b,根据目标机器的特征信息分析所述数据关系模型数据输出的与性能指标相关的参考特征数据,以确定与性能指标相关的性能描述标准。如前所述,除了目标机器的特征信息外、在确定所述性能描述标准时,还可以考虑参照程序编写的普遍规律和资深程序员的经验,进一步对所述数据关系模型数据输出的与性能指标相关的参考特征数据进行调整,从而使得所确定的性能标准具有参照价值。
所述性能描述标准是根据上述步骤确定出来的能使程序在目标机器获得理想性能的一个参照标准。
接着,请继续参考图1,执行步骤S3,比对所述特征数据和所述性能描述标准,以获得所述待分析程序针对所述目标机器的性能瓶颈。
由于所述性能描述标准具有参照价值,如果待分析程序的与性能指标相关的特征数据偏离了所述性能描述标准,那么可以反映出所述待分析程序将不能在目标机器上获得理想的性能,并且所述偏离性能描述标准的特征数据将是导致待分析程序将不能在目标机器上获得理想的性能的症结所在,因此,通过对所述偏离所述性能描述标准的特征数据进行分析,可以获得所述待分析程序针对所述目标机器的性能瓶颈。
请参考图2,在本发明的实施例中,通过比对所述特征数据和所述性能描述标准, 以获得所述待分析程序针对所述目标机器的性能瓶颈的方法包括通过比对所述特征数据和所述性能描述标准,以找出偏离所述性能描述标准的特征数据;以及分析偏离所述性能描述标准的特征数据,以获得所述待分析程序针对所述目标机器的性能瓶颈。例如,性能描述标准要求文件读写带宽为400M/S,而待分析程序的与文件读写带宽相关的特征数据显示其文件读写带宽为300M/S,那么,文件读写带宽将可能是导致待分析程序在目标机器中执行的性能瓶颈的因素之一。
在本发明实施例中,所述性能瓶颈可能包括访存的性能瓶颈、读写操作的性能瓶颈以及通信的性能瓶颈等等。
接着,请参考图1,执行步骤S4,通过分析所述待分析程序的性能瓶颈信息,以获得所述待分析程序的性能描述。
所述性能描述就是对用户程序性能瓶颈的定位和分析,它是为程序做出正确优化建议的基础。在本发明的实施中,所述性能描述是对待分析程序的性能瓶颈进行分析的结论,将对待分析程序的性能瓶颈进行分类,详细地描述每一种类型性能瓶颈的诱发原因,解释待分析程序的性能缺陷。
在对待分析程序做出了性能描述之后,对于少数经验丰富的程序员来说,已经获取了足够他们改进程序代码的信息。但是,对于大多数编写程序的初级程序员来说,仍然有必要为他们指明修改程序的捷径,
因此,接着,请参考图1,执行步骤S5,通过分析所述待分析程序的性能描述信息, 以获得所述待分析程序中的性能瓶颈的优化建议,所述解决方案,是针对性能描述为待分析程序的改进提供的建议,帮助用户优化代码。
在本发明的实施例中,通过分析所述待分析程序的性能描述信息,以获得所述待分析程序中性能瓶颈的优化建议的方法包括根据经验库分析所述待分析程序的性能描述,以获得所述待分析程序中性能瓶颈的优化建议。所述经验库中包含资深序员的工作经验,能够根据不同编程问题的性能瓶颈,提供相应的改进措施,从而形成所述优化建议。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
权利要求
1.一种基于目标机器的程序性能分析方法,其特征在于,包括 执行待分析程序,获取待分析程序中时间热点的与性能指标相关的特征数据,所述性能指标是基于目标机器和样本程序包而选定的; 获取与所述性能指标对应的性能描述标准,所述性能描述标准是针对所述目标机器和样本程序包确定的参考数据;以及 比对所述特征数据和所述性能描述标准,以获得所述待分析程序针对所述目标机器的性能瓶颈。
2.如权利要求I所述的方法,其特征在于,所述时间热点的定位方法为在所述待分析程序执行过程中,通过对所述待分析程序中包含的各个函数的时间消耗进行监测和统计,找出整个程序执行过程中消耗时间超过预定标准的函数部分,并将其定位为所述待分析程序的时间热点。
3.如权利要求I所述的方法,其特征在于,获取待分析程序中时间热点的与性能指标相关的特征数据的方法包括根据所述性能指标设铬与所述时间热点中计算行为、访存行为、和通信行为相关联的计数器;以及分析所述计数器收集和统计的数据,以获得所述时间热点与所述性能指标相关的特征数据。
4.如权利要求I所述的方法,其特征在于,获取所述性能描述标准的方法包括从所述样本程序包中筛选出与所述待分析程序类型接近的样本程序;获得所述样本程序的与所述性能指标相关的特征数据;以及根据目标机器的特征信息分析所述样本程序的与所述性能指标相关的特征数据,以确定与所述性能指标相关的性能描述标准。
5.如权利要求I所述的方法,其特征在于,获取所述性能描述标准的方法包括通过分析所述样本程序包中的样本程序建立针对所述目标机器的程序类型和参考特征数据之间的数据关系模型;将所述待分析程序的类型输入所述数据关系模型;以及根据目标机器的特征信息分析所述数据关系模型数据输出的参考特征数据,以确定与所述性能指标相关的性能描述标准。
6.如权利要求I所述的方法,其特征在于,通过比对所述特征数据和所述性能描述标准,以获得所述待分析程序针对所述目标机器的性能瓶颈的方法包括通过比对所述特征数据和所述性能描述标准,以找出偏离所述性能描述标准的特征数据;以及分析偏离所述性能描述标准的特征数据,以获得所述待分析程序针对所述目标机器的性能瓶颈。
7.如权利要求I所述的方法,其特征在于,还包括通过分析所述待分析程序的性能瓶颈信息,以获得所述待分析程序的性能描述;以及通过分析所述待分析程序的性能描述信息,以获得所述待分析程序中性能瓶颈的优化建议。
8.如权利要求7所述的方法,其特征在于,通过分析所述待分析程序的性能描述信息,以获得所述待分析程序中性能瓶颈的优化建议的方法包括根据经验库分析所述待分析程序的性能描述,以获得所述待分析程序中性能瓶颈的优化建议。
9.如权利要求I所述的方法,其特征在于,所述样本程序包包含具有参考意义的高效样本程序。
全文摘要
本发明提供了一种基于目标机器的程序分析方法,所述方法包括执行待分析程序,获取待分析程序中时间热点的与性能指标相关的特征数据,所述性能指标是基于目标机器和样本程序包而选定的;获取与所述性能指标对应的性能描述标准,所述性能描述标准是针对所述目标机器和样本程序包确定的参考数据;以及比对所述特征数据和所述性能描述标准,以获得所述待分析程序针对所述目标机器的性能瓶颈。所述方法能够针对目标机器找出所述待分析程序中存在的性能瓶颈。
文档编号G06F11/36GK102981952SQ20121043978
公开日2013年3月20日 申请日期2012年11月6日 优先权日2012年11月6日
发明者范昊, 陈华蓉, 彭超, 吴梦歌 申请人:无锡江南计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1