首页> 中国专利> 嵌入式应用的性能测试方法、嵌入式终端设备及网络系统

嵌入式应用的性能测试方法、嵌入式终端设备及网络系统

摘要

本发明实施例公开了嵌入式应用的性能测试方法、嵌入式终端设备及网络系统。其中,该方法包括:启动应用程序;通过采样的方式周期性地探测应用程序运行时的模块或函数属性,并根据探测结果统计所述应用程序运行时位于各模块或函数的次数;当所述应用程序运行结束,获取采样数据,并根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况。本发明实施例可较全面地反映嵌入式应用系统中各模块或函数在整个系统中的消耗分布情况。

著录项

  • 公开/公告号CN102043707A

    专利类型发明专利

  • 公开/公告日2011-05-04

    原文格式PDF

  • 申请/专利权人 腾讯科技(深圳)有限公司;

    申请/专利号CN200910110538.7

  • 发明设计人 黄磊;

    申请日2009-10-16

  • 分类号G06F11/36(20060101);

  • 代理机构44202 广州三环专利代理有限公司;

  • 代理人郝传鑫;潘中毅

  • 地址 518057 广东省深圳市高新科技园南区高新南一道飞亚达高科技大厦7层

  • 入库时间 2023-12-18 02:26:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-02-03

    专利权的转移 IPC(主分类):G06F11/36 登记生效日:20160111 变更前: 变更后: 申请日:20091016

    专利申请权、专利权的转移

  • 2014-12-31

    授权

    授权

  • 2012-10-10

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20091016

    实质审查的生效

  • 2011-05-04

    公开

    公开

说明书

技术领域

本发明涉及移动通信领域,尤其涉及嵌入式应用的性能测试方法、嵌入式终端设备及网络系统。

背景技术

嵌入式系统是指嵌入到对象体系中的专用计算机应用系统,广泛应用于手机、机顶盒、GPS等手持或微型设备中,而嵌入式应用是指基于嵌入式操作系统的应用程序。随着现代嵌入式产品需求的高度发展,嵌入式应用开发愈发普遍。基于成本或功耗等考虑,通常这类产品的硬件性能不高,对于开发者而言,应用程序的性能优化是必经之路。为了程序的优化,预先进行应用程序的性能测试和统计成为优化过程的关键一步。

传统的嵌入式应用开发时,通常基于模拟器,在PC环境中采用第三方开发工具如Profile等进行性能优化;但是由于在模拟环境统计的数据往往不能在真机或目标板中却无法实施,所以其无法反应嵌入式终端的真实测试情况,特别是在统计终端的外设相关操作的消耗时,如屏幕刷新、文件IO、网络IO等,误差相当大。

因此,演变为对于嵌入式终端真机进行性能测试,而基于嵌入式终端的真机或目标板中的性能统计,现在往往采用开始时间和结束时间差,来评价应用程序中关键模块或函数的消耗。这种方法通常只适用于局部模块或函数的绝对消耗测试,不容易直接找到系统瓶颈之所在,也不容易反映各模块或函数在整个系统中的消耗分布情况。

发明内容

有鉴于此,本发明实施例提供嵌入式应用的性能测试方法、嵌入式终端设备及嵌入式网络系统,可较全面地反映嵌入式应用系统中各模块或函数在整个系统中的消耗分布情况。

具体的,本发明实施例提供的一种嵌入式应用的性能测试的方法包括:

启动应用程序;

通过采样的方式周期性地探测应用程序运行时的模块或函数属性,并根据探测结果统计所述应用程序运行时位于各模块或函数的次数;所述模块或函数属性包括预先为所述模块或函数设定的入口标志及出口标志,所述入口标志指示所述应用程序位于所述模块或函数,所述出口标志指示所述应用程序离开所述模块或函数;

当所述应用程序运行结束,获取采样数据,并根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况,其中,所述采样数据包括所述应用程序运行时位于所述各模块或函数的次数、在所述应用程序运行时采样总次数以及采样总时间。

相应的,本发明实施例提供的一种嵌入式终端设备包括:

程序启动单元,用于启动应用程序;

采样统计单元,用于通过采样的方式周期性地探测应用程序运行时的模块或函数属性,并根据探测结果统计所述应用程序运行时位于各模块或函数的次数;所述模块或函数属性包括预先为所述模块或函数设定的入口标志及出口标志,所述入口标志指示所述应用程序位于所述模块或函数,所述出口标志指示所述应用程序离开所述模块或函数;

数据传输单元,用于当所述应用程序运行结束,获取采样数据并发送到数据分析设备,以使所述数据分析设备根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况,其中,所述采样数据包括所述应用程序运行时位于所述各模块或函数的次数、在所述应用程序运行时采样总次数以及采样总时间。

相应的,本发明实施例提供的另一种嵌入式终端设备包括:

程序启动单元,用于启动应用程序;

采样统计单元,用于通过采样的方式周期性地探测应用程序运行时的模块或函数属性,并根据探测结果统计所述应用程序运行时位于各模块或函数的次数;所述模块或函数属性包括预先为所述模块或函数设定的入口标志及出口标志,所述入口标志指示所述应用程序位于所述模块或函数,所述出口标志指示所述应用程序离开所述模块或函数;

数据分析单元,用于当所述应用程序运行结束,获取采样数据,并根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况,其中,所述采样数据包括所述应用程序运行时位于所述各模块或函数的次数、在所述应用程序运行时采样总次数以及采样总时间。

相应的,本发明实施例提供的一种嵌入式网络系统包括前面所述的嵌入式终端设备,另外,还包括数据分析设备,用于接收所述嵌入式终端设备输出的采样数据,并根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况。

本发明实施例通过周期性采样及统计的方式对嵌入式应用的性能进行测试,其能较全面地反映嵌入式应用系统中各模块或函数在整个系统中的消耗分布情况。有助于开发者发现应用程序运行时系统的瓶颈和优化效果的评估。

附图说明

图1是本发明实施例提供的嵌入式应用的性能测试方法一实施例流程示意图;

图2是本发明实施例提供的嵌入式应用的性能测试方法的另一实施例的流程示意图;

图3是本发明实施例提供的从系统设置到对嵌入式应用的性能测试完成的整体流程示例示意图;

图4是本发明实施例提供的嵌入式终端设备的第一实施例的结构示意图;

图5是本发明实施提供的嵌入式终端设备的第二实施例的结构示意图;

图6是本发明实施例提供的嵌入式网络系统的一实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

图1是本发明实施例提供的嵌入式应用的性能测试方法一实施例流程示意图;如图1所示,本实施例的方法包括:

步骤S101,启动应用程序。具体的,所述启动应用程序的步骤可为启动专用于测试的应用程序用例或脚本。

步骤S102,通过采样的方式周期性地探测应用程序运行时的模块或函数属性,并根据探测结果统计所述应用程序运行时位于各模块或函数的次数。

具体实现中,所述通过采样的方式周期性地探测应用程序运行时的模块或函数可包括:通过采用定时器控制采样流程,周期性地探测应用程序运行时的模块或函数属性;和/或,通过采样线程控制采样流程,周期性地探测应用程序运行时的模块或函数属性。其中,对于支持多线程或者适合采用多线程的应用程序,可采用采样线程控制采样流程;而对于不支持多线程或者不适合采用多线程的应用程序,可采用采样定时器来模拟采样线程实现对采样流程的控制。

另外,具体实现中,所述模块或函数属性包括预先为所述模块或函数设定的入口标志及出口标志,所述入口标志指示所述应用程序位于所述模块或函数,所述出口标志指示所述应用程序离开所述模块或函数,而所述入口标志和出口标志进一步可为:所述入口标志为通过打桩宏设置的入口桩,所述出口标志为通过打桩宏设置的出口桩;比如,对某一模块设置的模块进行打桩处理采用的打桩宏为:MODULE_HOOK_IN(id);MODULE_HOOK_OUT;其中,所述id为所述模块的身份标识。而对某一函数设置的函数进行打桩处理的打桩宏可为:FUNCTION_HOOK_IN(name);FUNCTION_HOOK_OUT,其中,所述name为所述函数的函数名。或者,所述入口标志为所述模块或函数的ID(身份标识),所述出口标志可设置为空。具体实现中,任何可将模块的入口或出口区分开来,并且对于各模块或函数具有唯一性的标志均可作为模块或函数的入口标志或出口标志。

步骤S103,当所述应用程序运行结束,获取采样数据,并根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况。其中,所述采样数据包括所述应用程序运行时位于所述各模块或函数的次数、在所述应用程序运行时采样总次数以及采样总时间。具体实现中,所述根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况包括:根据模块或函数在所述应用程序运行时的整体耗时等于应用程序运行时位于所述各模块或函数的次数与在所述应用程序运行时采样总次数的比值再乘以采样总时间的原则计算出所述各模块或函数在所述应用程序运行时的整体耗时情况。

另外,具体实现中,本发明实施例提供的嵌入式性能测试方法可由独立的嵌入式终端设备完成,也可由嵌入式终端设备及数据分析设备组成的系统完成,当由嵌入式终端设备及数据分析设备组成的系统完成时,其中步骤S101、S102由所述嵌入式终端设备完成,而所述步骤S103的流程划分为:当所述应用程序运行结束,所述嵌入式终端设备获取采样数据,并将所述采样数据发送给数据分析设备,由所述数据分析设备根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况。其中,所述嵌入式终端设备包括手机、机顶盒、GPS等手持或微型设备,所述数据分析设备可为装载有分析工具的PC机或者其他可视化服务器设备。

本实施例提供的嵌入式应用的性能测试方法,通过周期性采样及统计的方式对嵌入式应用的性能进行测试,其能较全面地反映嵌入式应用系统中各模块或函数在整个系统中的消耗分布情况。有助于开发者发现应用程序运行时系统的瓶颈和优化效果的评估。

图2是本发明实施例提供的嵌入式应用的性能测试方法的另一实施例的流程示意图;本实施例以嵌入式终端设备及数据分析设备组成的系统完成嵌入式应用的性能测试方法为例进行说明。如图2所示,本实施例的方法包括:

步骤S201,设定对应用程序进行性能测试时所针对的模式,所述模式包括基于模块模式、基于函数模式以及基于模块和函数的混合模式。

步骤S202,为应用程序中的模块或函数设定入口标志及出口标志作为所述模块或函数的属性。同样的,所述入口标志指示所述应用程序位于所述模块或函数,所述出口标志指示所述应用程序离开所述模块或函数;而所述入口标志和出口标志进一步可为:所述入口标志为通过打桩宏设置的入口桩,所述出口标志为通过打桩宏设置的出口桩;比如,对某一模块设置的模块进行打桩处理采用的打桩宏为:MODULE_HOOK_IN(id);MODULE_HOOK_OUT;其中,所述id为所述模块的身份标识。而对某一函数设置的函数进行打桩处理的打桩宏可为:FUNCTION_HOOK_IN(name);FUNCTION_HOOK_OUT,其中,所述name为所述函数的函数名。或者,所述入口标志为所述模块或函数的ID(身份标识),所述出口标志可设置为空。具体实现中,任何可将模块的入口或出口区分开来,并且对于各模块或函数具有唯一性的标志均可作为模块或函数的入口标志或出口标志。具体实现中,可对应用程序中的所有模块或函数均进行设置入口标志及出口标志,也可仅对起重要作用的函数或模块设置入口标志及出口标志,或者当模块或函数有关联的子模块或子函数时,可仅对其母模块或母函数设置入口标志及出口标志,而其子模块或函数不进行处理,以使对子模块或子函数耗时计算入其母模块或母函数。

步骤S203,设置采样定时器或/和采样线程,并将启动采样定时器及采样线程的优先级设置为高于应用程序运行的优先级。

步骤S204,启动应用程序;同样的,具体实现中,具体的,所述启动应用程序的步骤可为启动专用于测试的应用程序用例或脚本。

步骤S205,通过采样的方式周期性地探测应用程序运行时的模块或函数属性,并根据探测结果统计所述应用程序运行时位于各模块或函数的次数。具体实现中,所述通过采样的方式周期性地探测应用程序运行时的模块或函数可包括:通过采用定时器控制采样流程,周期性地探测应用程序运行时的模块或函数属性;和/或,通过采样线程控制采样流程,周期性地探测应用程序运行时的模块或函数属性。其中,对于支持多线程或者适合采用多线程的应用程序,可采用采样线程控制采样流程;而对于不支持多线程或者不适合采用多线程的应用程序,可采用采样定时器来模拟采样线程实现对采样流程的控制。

步骤S206,当所述应用程序运行结束,获取采样数据,并根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况。

本实施例提供的嵌入式应用的性能测试方法,通过周期性采样及统计的方式对嵌入式应用的性能进行测试,其能较全面地反映嵌入式应用系统中各模块或函数在整个系统中的消耗分布情况。有助于开发者发现应用程序运行时系统的瓶颈和优化效果的评估。

为进一步描述清楚本发明实施例的嵌入式应用的性能测试方法,下面结合图3所示的本发明从系统设置到对嵌入式应用的性能测试完整的完整流程示例示意图进行介绍。如图3所示,该流程包括:

步骤S301,确定需分析的应用程序对象;

步骤S302,设定对所述应用程序进行性能测试时所针对的模式,所述模式包括基于模块模式、基于函数模式以及基于模块和函数的混合模式。

步骤S303,根据所述设定的工作模式,在关键模块或关键函数出入口使用宏方式,添加打桩处理。当然为了加大统计的准确性,尽可能覆盖应用程序内所有模块或函数。

步骤S304,设置采样线程,其优先级不低于应用程序,从而保证采样的实时性。

步骤S305,启动应用程序,运行专用于性能测试的测试用例或脚本。

步骤S306,启动采样线程,周期性的探测所述应用程序运行时的桩的状态,并根据探测结果统计某段时间内,系统运行状态恰好位于某个函数或模块内的次数。

步骤S307,测试完成,退出应用程序。

步骤S308,结束运行采样线程,输出采样数据。

步骤S309,将采样数据传输到PC端的数据分析工具,由所述数据分析工具根据公式:函数或模块的耗时=(采样命中次数/采样总次数)*采样总时间换算出函数或模块在整体的时间消耗分布。其中,所述采样命中次数为前述统计的系统运行状态恰好位于某个函数或模块内的次数。

步骤S310,输出直观的性能消耗分布图。

相应的,本发明实施例提供可用于实施上述各方法实施例的设备及系统,下面分别对本发明实施例提供的嵌入式终端设备及嵌入式网络系统进行描述。

图4是本发明实施例提供的嵌入式终端设备的第一实施例的结构示意图,本实施例的终端设备可用于实现前述图1所示实施例的方法,具体的本实施例的嵌入式终端设备包括程序启动单元44、采样统计单元45、以及数据分析单元46,其中:

所述程序启动单元44,用于启动应用程序。具体的,所述启动应用程序的步骤可为启动专用于测试的应用程序用例或脚本。

所述采样统计单元45,用于通过采样的方式周期性地探测应用程序运行时的模块或函数属性,并根据探测结果统计所述应用程序运行时位于各模块或函数的次数;所述模块或函数属性包括预先为所述模块或函数设定的入口标志及出口标志,所述入口标志指示所述应用程序位于所述模块或函数,所述出口标志指示所述应用程序离开所述模块或函数。进一步仍参考图4所述采样统计单元45包括采样单元450和统计单元451,其中:

所述采样单元450,用于通过采样定时器或采用线程控制采样流程,周期性地探测应用程序运行时的模块或函数属性;

所述统计单元451,用于根据所述采样单元的探测结果统计所述应用程序运行时位于各模块或函数的次数。

具体实现中,所述采样单元450可通过采用定时器和/或采样线程控制采样流程,周期性地探测应用程序运行时的模块或函数属性。其中,对于支持多线程或者适合采用多线程的应用程序,可采用采样线程控制采样流程;而对于不支持多线程或者不适合采用多线程的应用程序,可采用采样定时器来模拟采样线程实现对采样流程的控制。另外,具体实现中,所述模块或函数属性包括预先为所述模块或函数设定的入口标志及出口标志,所述入口标志指示所述应用程序位于所述模块或函数,所述出口标志指示所述应用程序离开所述模块或函数,而所述入口标志和出口标志进一步可为:所述入口标志为通过打桩宏设置的入口桩,所述出口标志为通过打桩宏设置的出口桩;比如,对某一模块设置的模块进行打桩处理采用的打桩宏为:MODULE_HOOK_IN(id);MODULE_HOOK_OUT;其中,所述id为所述模块的身份标识。而对某一函数设置的函数进行打桩处理的打桩宏可为:FUNCTION_HOOK_IN(name);FUNCTION_HOOK_OUT,其中,所述name为所述函数的函数名。或者,所述入口标志为所述模块或函数的ID(身份标识),所述出口标志可设置为空。具体实现中,任何可将模块的入口或出口区分开来,并且对于各模块或函数具有唯一性的标志均可作为模块或函数的入口标志或出口标志。

所述数据分析单元46,用于当所述应用程序运行结束,获取采样数据,并根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况,其中,所述采样数据包括所述应用程序运行时位于所述各模块或函数的次数、在所述应用程序运行时采样总次数以及采样总时间。

本实施例提供的嵌入式终端设备通过周期性采样及统计的方式对嵌入式应用的性能进行测试,其能较全面地反映嵌入式应用系统中各模块或函数在整个系统中的消耗分布情况。有助于开发者发现应用程序运行时系统的瓶颈和优化效果的评估。

图5是本发明实施提供的嵌入式终端设备的第二实施例的结构示意图,本实施例的终端设备同样可用于实现前述图2所示实施例所述的方法,参见图5及图4可知,本实施例的嵌入式终端设备与图4所示的实施例的终端设备的区别在于,本实施例相比图4所示实施例新增采样设置单元42及属性设置单元41及模式设置单元40,下面仅就本实施例新增各模块进行介绍,其他模块的功能与图4所示实施例相同,在此不赘述。其中:

所述模式设置单元40,与所述程序启动单元44相连,用于设定对应用程序进行性能测试时所针对的模式,所述模式包括基于模块模式、基于函数模式以及基于模块和函数的混合模式。

所述属性设置单元41,与所述程序启动单元44相连,用于为应用程序中的模块或函数设定入口标志及出口标志作为所述模块或函数的属性。

所述采样设置单元42,与所述采样统计单元45相连,用于设置采样定时器或/和采样线程,并将启动采样定时器及采样线程的优先级设置为高于应用程序运行的优先级。

本实施例提供的嵌入式终端设备通过周期性采样及统计的方式对嵌入式应用的性能进行测试,其能较全面地反映嵌入式应用系统中各模块或函数在整个系统中的消耗分布情况。有助于开发者发现应用程序运行时系统的瓶颈和优化效果的评估。

具体实现中,嵌入式终端设备的其他实施例除包括前述的各种模块外,还可以包括用于确定需分析的应用程序对象的确定单元,以及用于显示性能消耗分布图的显示单元等。

前述的嵌入式终端设备可独立实现嵌入式应用的性能测试方法,下面介绍可完成嵌入式应用的性能测试方法的网络系统。

图6是本发明实施例提供的嵌入式网络系统的一实施例的结构示意图,如图6所示,本实施例的嵌入式网络系统包括嵌入式终端设备62及数据分析设备63,其中:

所述嵌入式终端设备62包括程序启动单元621、采样统计单元622以及数据传输单元623,其中所述程序启动单元621分别与采样统计单元622与程序启动单元44及采样统计单元45相同,因此在此不对程序启动单元621及采样统计单元622进行叙述,在此仅叙述所述数据传输单元623,具体的,所述数据传输单元623用于当所述应用程序运行结束,获取采样数据并发送到数据分析设备。

所述数据分析设备63,用于接收所述嵌入式终端设备62输出的采样数据,并根据所述采样数据计算出所述各模块或函数在所述应用程序运行时的整体耗时情况。

具体实现中,本实施例的数据分析设备63对采样数据的处理方式可与数据分析单元46对采样数据的处理方式相同,在此不赘述。

相应的,除本实施例之外,嵌入式网络系统中的嵌入式终端设备62还可包括采样设置单元、属性设置单元、模式设置单元等模块。

本实施例提供的嵌入式网络系统通过周期性采样及统计的方式对嵌入式应用的性能进行测试,其能较全面地反映嵌入式应用系统中各模块或函数在整个系统中的消耗分布情况。有助于开发者发现应用程序运行时系统的瓶颈和优化效果的评估。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号