首页> 中国专利> 一种基于trace文件的代码功耗测试方法

一种基于trace文件的代码功耗测试方法

摘要

本发明提供了一种基于trace文件的代码功耗测试方法,包括:功耗数据的测量与同步时延的计算,计算实际功耗数据并去噪,代码的功耗的计算。所述功耗数据的测量与同步时延的计算,利用系统空闲时间的周期性功耗跳变进行提取;计算实际功耗数据并去噪采用“基于DBSCAN的数据去噪”方法进行筛选;基于trace文件代码的功耗的计算利用trace文件与去噪后的实际功耗曲线相结合进行计算。本发明基于trace文件的代码功耗测试方法,不需要人为地介入监督,能够自己识别出噪声点,并把误差尽可能的降低,并且,在实际使用过程中,不需要再另外对手机本身的电路进行改造,就能够尽可能地减少手机系统本身功耗带来地影响,灵活方便,使用快捷,对测试手机地损伤小。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-04-02

    授权

    授权

  • 2017-06-06

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

    实质审查的生效

  • 2017-05-10

    公开

    公开

说明书

技术领域

本发明涉及一种基于trace文件的代码功耗测试方法,通过对测量的功耗数据与trace文件结合计算代码的功耗,属于手机功耗测试领域。

背景技术

随着互联网技术和移动电子技术的高速推进,无线移动通信网络呈现出快速发展。在适用范围上更加普遍、在功能上发展日趋完善,以手机为代表的无线终端日益受到越来越多人士的追捧,无线网络技术给人们的生活和工作带来了巨大便利性。

智能手机是目前世界上最流行的通信平台设备。智能手机提供着比传统手机更多更强大的功能。其中这些智能手机设备,包含一系列的通信接口、强大的处理能力、储存能力和光强传感器、GPS定位器等传感器。丰富的手机硬件和操作功能同时也导致了智能手机电量经常在使用者不知情的情况下被消耗。

智能手机的功耗随着其软件生态和硬件性能的发展在不断地提升,对于手机开发者而言,代码的具体功耗是一个不得不考虑的问题,并且对手机开发者而言,不断优化代码使得功耗减小、提高手机的整体续航是一个十分有意义的事情。

发明内容

本发明所要解决的技术问题是:提供一种基于trace文件的代码功耗测试方法,该方法不需要对手机本身的电路进行改造,只需利用一般的功耗测量设备进行测量,就可以消除系统本身的功耗带来的影响。

本发明为解决上述技术问题采用以下技术方案:一种基于trace文件的代码功耗测试方法,包括如下步骤:

步骤1,利用功耗测试设备测量代码运行时间若干倍的功耗数据,并将该功耗曲线按时间一分为二,前半段数据为代码功耗测试数据,后半段为空闲阶段功耗测试数据。利用系统空闲阶段的周期性跳变,将代码功耗的数据与空闲阶段的功耗数据进行同步,从而得到两者的同步时延;

步骤2,对步骤1得到的同步时延,与系统空闲阶段的功耗的周期性跳变一样具有周期性,利用同步时延的周期性,改变同步时延的周期数目,得到一系列的由代码功耗数据减去空闲阶段的功耗数据得到的实际功耗数据,并对这一系列的实际功耗曲线利用DBSCAN算法进行去噪,然后取均值,得到最终的实际功耗数据;

步骤3,结合步骤2得到的实际功耗曲线,与trace文件进行比对,找到特定代码的运行起止时间,对实际功耗曲线进行梯形积分,得到总的代码执行消耗的功耗,最后计算出平均值作为代码执行期间的功耗。

作为本发明的一种优选方案,所述步骤1的具体测量过程为:在测量代码的功耗数据,应在代码执行完成后继续测量,并保证测量时间足够长使得系统进入空闲状态并出现周期性的功耗跳变,并使得整个测量时间达到代码执行时间的10倍。可选地,可以根据代码地具体执行时间调整具体的测量时间。

作为本发明的一种优选方案,步骤1中所述同步时延的计算具体过程为:将最终的测量功耗按时间分成两等份,其中第一份为代码功耗数据,第二部分为空闲功耗数据,并将空闲功耗数据延时不同的时间,并分别计算延时后的空闲功耗数据与代码功耗数据之间的相关系数,该相关数据具有周期性,取最小的正延时作为最终的最小同步时延。

作为本发明的一种优选方案,所述步骤2的具体过程为:利用所述步骤1得到的最小同步时延,加上若干空闲功耗的跳变周期,得到一系列新的同步时延,并基于这一系列同步时延对空闲功耗曲线进行延时,得到一系列新的空闲功耗曲线。并将代码功耗曲线分别与这些空闲功耗相减,得到一系列实际功耗曲线。

作为本发明的一种优选方案,所述步骤2的去除噪声的具体过程为:将所述步骤2中得到的一系列实际功耗曲线通过DBSCAN聚类算法进行聚类,并把所得最大的聚类里的数据取均值,作为去除噪声后的实际功耗数据。

作为本发明的一种优选方案,所述步骤3中计算代码功耗的具体步骤为:首先在需要测量的代码中嵌入记录该代码执行情况的trace代码,并在程序执行结束后,根据最后得到的trace文件分析特定代码的起止时间,然后对所述步骤2得到的实际功耗曲线进行积分得到该代码的能耗,最后对时间取均值,得到该代码的平均功耗。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:

1.本发明基于trace文件的代码功耗测试方法,不需要人为地介入监督,能够自己识别出噪声点,并把误差尽可能的降低。

2.本发明基于trace文件的代码功耗测试方法,在实际使用过程中,不需要再另外对手机本身的电路进行改造,就能够尽可能地减少手机系统本身功耗带来地影响,灵活方便,使用快捷,对测试手机地损伤小。

附图说明

图1是本发明基于trace文件的代码功耗测试方法的整体架构图。

图2是本发明中DBSCAN算法的一般模型图。

图3是实施例中采用本发明基于DBSCAN算法的代码实际功耗数据去噪的流程图。

具体实施方式

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

如图1所示,本发明主要通过一功耗测量系统来实现数据测量与分析,该功耗测量系统与测试手机连接,采集相关数据。具体地,

通过数据处理模块采集第一时间测试时间段的消耗功率和第二时间段的消耗功率,其中,在第一测试时间段内,待测程序运行;第二测试时间段内,待测程序不运行。因此第一测试时间段的消耗功率包括系统自身运行所需的功率和待测程序运行所需的功率;第二测试时间段的消耗功率为系统自身运行所需的功率。为了提高测量的准确性,第一测试时间为待测程序运行时间的3倍以上。通过求平均的方式减少测量误差。

理论上,为了提高测试的准确性,第一时间段内的系统自身运行消耗的功率应等于第二时间段内的系统自身运行消耗的功率,从而能够准确计算出待测程序运行所消耗的功率。但是实际上,第一测试时间段内,系统本身运行的代码和第二时间段内的不完全相同,消耗的功率会略有差别。为了减少误差,可以通过延长第一测试时间和第二测试时间,同时通过相关的算法对数据进行清洗,减少明显的偏差。

在第一测试时间段内,待测程序中的相关单元运行若干次,为了计算待测程序中的各个单元的耗能情况,采集trace文件中的数据,提取代码运行时间,通过各个代码运行时间和对应该时间内的功率消耗,计算各个单元的总耗能,从而对各个单元的耗能情况进行统计,如果某个单元的耗能过高,可以针对该单元进行代码优化,从而降低程序的功耗。

总之,本发明的主要过程如上所述,通过采集系统的功耗数据,以及trace文件中软件代码的运行时间,对代码的功耗进行统计,从而获得耗能情况。进而有针对性的进行优化。

在某个案例中,一种基于trace文件的代码功耗测试方法,包括如下步骤:功耗数据的测量与同步时延的计算,计算实际功耗数据并去噪,代码的功耗的计算。

功耗数据的测量与同步时延的计算,利用系统空闲时间的周期性功耗跳变进行提取;计算实际功耗数据并去噪采用“基于DBSCAN的数据去噪”方法进行筛选;基于trace文件代码的功耗的计算利用trace文件与去噪后的实际功耗曲线相结合进行计算。

所述功耗数据的测量过程中,首先关闭被测试手机的所有后台软件以减少其他软件对功耗测试带来的影响,待系统稳定后执行待测试的代码,并同时利用功耗测试设备记录手机功耗数据,并在代码执行结束后继续记录功耗数据,一直到200s为止。

功耗记录的时间可以为其他数字,但要保证至少是代码总共运行的时间的至少4倍及以上,并且在后半段时间内至少出现20次及以上的空闲功耗的周期性跳变,以获得准确的同步时延与去噪效果。

所述同步时延的计算过程中,首先将测量的功耗数据按照时间先后顺序等分为P1与P2两部分,其中P1除了包含有代码运行的功耗外,还包括了代码运行结束后的空闲功耗数据,P2则只含有空闲功耗数据。对P2进行不同程度地延时,并分别计算与P1计算相关系数,由于空闲功耗曲线周期性地功耗跳变,所获得的相关系数也具有周期性,把相关系数在第一个正周期时间内得到最大值的时间点记为最小同步时延tδ

进一步地,所述计算实际功耗数据并去噪过程中,利用DBSCAN算法的良好的去噪性能进行噪声的去除。首先,基于最小同步时延tδ得到通用的同步时延t’。并利用t’对P2进行不同程度地延时得到一系列不同地空闲功耗曲线,再将P1减去这些空闲功耗曲线得到一系列实际能耗曲线(功耗数据)P0

t’=(tδ+t0×n),

P0=P1-P2(t-t’),

其中,t0表示空闲功耗数据地跳变周期,t’表示通用的同步时延,t是一个变量表示时间,n∈Z,当同步时延t’为负数时表示对时间序列进行左移处理,当t’为正数时表示对时间序列进行右移处理。

如图3所示,将n取34个不同地数值,得到34个不同的P0数据,并对这些数据按照时间维度进行加窗,并对窗口内的数据进行DBSCAN算法聚类,保留最大的聚类并取均值,作为该窗口内去噪后的实际功耗数据。接着滑动窗口,对下一个窗口内的数据进行处理,直到处理完所有的数据。

其中,利用DBSCAN去噪的算法中有四个重要的参数,分别是以P为中心点的邻域内的最少点的数量minPts、num、半径eps、rate。minPts表示核心点指定区域内密度最低值,num表示某一点指定区域内的密度值,eps为指定区域的半径,rate是对指定区域半径的修正系数。在DBSCAN算法中,如图2,对与一个给定的点,以该点为圆心,以eps为半径的范围内的其他点的个数记为nd,当nd大于等于minPts时,记该点为核心点;本次项目中,nd大于1而小于minPts时,记该点为边界点,边界点的分类需要根据它能够密度可达的核心点的分类决定;当nd小于1时,该点为不属于任何分类的噪声点。其中半径eps的选取方式如下:

epsn=eps×rate,

其中,该公式中的X表示需要聚类的向量集合所形成的矩阵,n是向量的维数,m是向量的个数。max(X)是X矩阵每个维度最大的数值形成的新的向量,min(X)是X矩阵每个维度最小的数值形成的新的向量,prod用以计算向量各个维度的乘积。为了能够动态调整该算法的去噪效果,利用rate对eps进行约束,得到新的epsn

可选地,minPts、num、eps、rate都不是固定值,可以根据数据量的规模调整,直到取得良好的去噪效果为止。

进一步地,在所述代码的功耗的计算时,根据trace文件中代码的执行起止时间,与去噪后的P0数据对照,并对去噪后的P0进行梯形积分,得到被测试的特定代码的执行总能耗,然后利用总能耗对时间取均值,得到该代码执行期间的平均功耗。

以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。以上详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种等同变换,这些等同变换均属于本发明的保护范围。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号