System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于计算机软件测试领域,特别涉及一种基于跨平台迁移的软件性能检测方法、系统及介质。
技术介绍
1、随着科技的发展,跨平台迁移在软件开发中变得越来越常见。然而,开发人员在进行跨平台迁移开发时往往会面临性能方面的问题。这些问题主要源于不同构架和硬件平台之间存在的差异,导致迁移后的软件在性能方面出现变化。这种性能变化可能对软件的运行效率、响应速度和资源利用产生重大影响,因此在跨平台迁移中确保性能一致性变得至关重要。
2、在现有的软件迁移开发过程中,性能问题的检测成为了一项难题。首先,如何界定“运行耗时”和“差距过大”是一个关键问题。由于不同构架的硬件平台存在性能差异,以软件运行的绝对时间开销作为性能指标是不合适的。目前,一些性能测试工具倾向于使用cpu消耗的周期数来衡量软件运行的性能开销,以消除cpu频率对性能计量的影响。然而,这种方法对于分析跨平台迁移时的性能开销并不适用。因为不同构架的硬件平台在机器代码、调度策略、内存布局等方面都存在显著差异,所以仅仅采用cpu周期数作为衡量指标依然不能够充分消除构架与硬件差异对性能计量的影响。
3、此外,软件通常具有庞大的源代码量,可能达到上万甚至上百万行。开发迁移软件的人员往往是软件开发者,对于硬件方面的知识了解可能有限。在迁移开发的过程中,如果采用人工遍历检查代码的方法来对所有涉及具体硬件平台细节的设计进行性能考量,将需要大量的资源和人力,往往不具备可实现性。因此,针对软件的迁移开发往往面临着性能一致性方面的难题。综上所述,现有的软件迁移开发面临着性能一致性
技术实现思路
1、本专利技术的目的是为了全部或者部分解决上述问题,提供一种基于跨平台迁移的软件性能检测方法、系统及介质,以提高软件的迁移开发效率和质量。
2、为了解决这些问题,本专利技术需要准确衡量跨平台迁移过程中的性能开销。本专利技术使用函数运行消耗的绝对时间占程序整体运行消耗的绝对时间的百分比,后文简称“耗时占比”,作为衡量单个函数“运行开销”的指标,提供了函数“运行开销”跨构架、硬件平台的公平对比,解决了如何计量“运行开销”的难题。“耗时占比”这一计量指标不仅能够解决如何衡量“运行开销”的难题,还能够解决如何裁定“差距过大”的问题。通过对比同一个函数在不同构架平台上的“耗时占比”,创新性地提出,可以通过计算不同平台上“耗时占比”的绝对差值是否大于一定阈值的方法,来裁定软件的某个函数或功能是否存在跨平台迁移前后性能“差距过大”的问题。为了实现细粒度的跨平台移植软件性能问题分析与检测,本专利技术提出从函数和代码基本块,两方面入手分析软件在性能是否可能存在问题。基于该思想,本专利技术设计并实现了一套综合对比分析软件的同一个功能或函数在函数和代码基本块,这两个级别上的“耗时占比”相关的数据,系统性地检测软件在迁移过程中是否存在性能问题的算法,以进行软件性能检测。
3、为实现上述目的,本专利技术采用以下技术方案:
4、一方面,本专利技术提供了一种基于跨平台迁移的软件性能检测方法,其步骤包括:
5、(1)复制目标平台的编译器并进行修改,使修改的编译器支持函数插桩和bbl插桩功能;
6、(2)使用修改的编译器对软件进行编译,使得编译后的软件中包含插桩代码,用于记录函数和基本块的执行时间信息;
7、(3)在不同目标平台上运行编译过的软件,收集函数执行trace信息;
8、(4)将收集的不同目标平台上的函数执行trace信息输入给对比分析程序,通过对比分析程序提取函数执行trace信息中的函数时间信息,计算在每个目标平台上的函数运行所消耗的绝对时间占程序运行总时间的比例即耗时占比;比较不同目标平台对应函数的耗时占比之差是否超过设置的阈值,若超过,则判定函数性能异常,否则函数无异常;
9、(5)如果函数性能异常,则在运行参数中加入该函数的id,并重新运行,生成bbltrace信息;
10、(6)收集不同目标平台上的bbl trace信息,输入给对比分析程序,通过对比分析程序提取bbl trace信息中的进入和退出时间信息,根据进入和退出的时间之差计算每个bbl的耗时占比;比较不同目标平台上相同bbl的耗时占比之差是否超过设置的阈值,若超过,则判定软件存在性能问题,否则软件不存在性能问题。
11、进一步地,步骤(1)中修改编译器时,添加一个开关来控制每一个函数是否记录bbl进入、退出的耗时信息,该开关仅在检测到存在性能问题的函数时打开。
12、进一步地,步骤(1)中添加开关的方法为:在编译程序源码时,将函数所有的bbl复制一份,仅在新复制的bbl中添加耗时信息记录代码;然后在函数入口新增一个bbl,并在该bbl中检查bbl耗时信息记录开关,并选择进入没有耗时信息记录代码的bbl群组或者有耗时信息记录代码的bbl群组。
13、进一步地,全部步骤完成后,根据对比分析结果生成报告,报告描述软件在不同目标平台上的性能一致性情况,指明出现异常的函数或基本块,并提供进一步的分析和建议。
14、另一方面,本专利技术提供了一种基于跨平台迁移的软件性能检测系统,包括:
15、修改编译器模块:用于复制目标平台的编译器并进行修改,使修改的编译器支持函数插桩和bbl插桩功能;
16、修改的编译器:通过修改编译器模块进行修改得到,用于对软件进行编译,使得编译后的软件中包含插桩代码;
17、运行软件接口模块:用于将编译后的软件输入到不同的目标平台上运行,以及从目标平台接收生成的函数执行trace信息和bbl trace信息;
18、对比分析模块:用于提取函数执行trace信息中的函数时间信息,计算在每个目标平台上的函数运行所消耗的绝对时间占程序运行总时间的比例即耗时占比;比较不同目标平台对应函数的耗时占比之差是否超过设置的阈值,若超过,则判定函数性能异常,否则函数无异常;以及,提取bbl trace信息中的进入和退出时间信息,根据进入和退出的时间之差计算每个bbl的耗时占比;比较不同目标平台上相同bbl的耗时占比之差是否超过设置的阈值,若超过,则判定软件存在性能问题,否则软件不存在性能问题。
19、进一步地,修改编译器模块还用于修改编译器时,在编译器中添加一个开关来控制每一个函数是否记录bbl进入、退出的耗时信息,该开关仅在检测到存在性能问题的函数时打开。
20、进一步地,还包括报告生成模块:用于根据对比分析结果生成报告,报告描述软件在不同目标平台上的性能一致性情况,对于存在异常的函数或基本块提供进一步的分析和建议。
21、另一方面,本专利技术还提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被执行时实现上述方法的步骤。
22、本专利技术与现有技术相比,具有以下优点:
23、1.高效的性能分析:通过基于函数调用和bbl运行耗时相结合的方式,能够更全面、准确地分析软件迁移过程中的性能问题。本文档来自技高网...
【技术保护点】
1.一种基于跨平台迁移的软件性能检测方法,其特征在于,步骤包括:
2.如权利要求1所述的方法,其特征在于,步骤(1)中修改编译器时,添加一个开关来控制每一个函数是否记录BBL进入、退出的耗时信息,该开关仅在检测到存在性能问题的函数时打开。
3.如权利要求2所述的方法,其特征在于,步骤(1)中添加开关的方法为:在编译程序源码时,将函数所有的BBL复制一份,仅在新复制的BBL中添加耗时信息记录代码;然后在函数入口新增一个BBL,并在该BBL中检查BBL耗时信息记录开关,并选择进入没有耗时信息记录代码的BBL群组或者有耗时信息记录代码的BBL群组。
4.如权利要求1所述的方法,其特征在于,全部步骤完成后,根据对比分析结果生成报告,报告描述软件在不同目标平台上的性能一致性情况,指明出现异常的函数或基本块,并提供进一步的分析和建议。
5.一种基于跨平台迁移的软件性能检测系统,其特征在于,包括:
6.如权利要求5所述的系统,其特征在于,修改编译器模块还用于修改编译器时,在编译器中添加一个开关来控制每一个函数是否记录BBL进入、退出的
7.如权利要求5所述的系统,其特征在于,还包括报告生成模块:用于根据对比分析结果生成报告,报告描述软件在不同目标平台上的性能一致性情况,对于存在异常的函数或基本块提供进一步的分析和建议。
8.一种计算机可读存储介质,其特征在于,存储有计算机程序,该计算机程序被执行时实现权利要求1-4任一项所述方法的步骤。
...【技术特征摘要】
1.一种基于跨平台迁移的软件性能检测方法,其特征在于,步骤包括:
2.如权利要求1所述的方法,其特征在于,步骤(1)中修改编译器时,添加一个开关来控制每一个函数是否记录bbl进入、退出的耗时信息,该开关仅在检测到存在性能问题的函数时打开。
3.如权利要求2所述的方法,其特征在于,步骤(1)中添加开关的方法为:在编译程序源码时,将函数所有的bbl复制一份,仅在新复制的bbl中添加耗时信息记录代码;然后在函数入口新增一个bbl,并在该bbl中检查bbl耗时信息记录开关,并选择进入没有耗时信息记录代码的bbl群组或者有耗时信息记录代码的bbl群组。
4.如权利要求1所述的方法,其特征在于,全部步骤完成后,根据对比分析结果生成报告,报告描述软件在不同目标...
【专利技术属性】
技术研发人员:蔡彦,王静华,郭宇祺,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。