本發(fā)明涉及一種基于trace文件的代碼功耗測(cè)試方法,通過(guò)對(duì)測(cè)量的功耗數(shù)據(jù)與trace文件結(jié)合計(jì)算代碼的功耗,屬于手機(jī)功耗測(cè)試領(lǐng)域。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)和移動(dòng)電子技術(shù)的高速推進(jìn),無(wú)線移動(dòng)通信網(wǎng)絡(luò)呈現(xiàn)出快速發(fā)展。在適用范圍上更加普遍、在功能上發(fā)展日趨完善,以手機(jī)為代表的無(wú)線終端日益受到越來(lái)越多人士的追捧,無(wú)線網(wǎng)絡(luò)技術(shù)給人們的生活和工作帶來(lái)了巨大便利性。
智能手機(jī)是目前世界上最流行的通信平臺(tái)設(shè)備。智能手機(jī)提供著比傳統(tǒng)手機(jī)更多更強(qiáng)大的功能。其中這些智能手機(jī)設(shè)備,包含一系列的通信接口、強(qiáng)大的處理能力、儲(chǔ)存能力和光強(qiáng)傳感器、GPS定位器等傳感器。豐富的手機(jī)硬件和操作功能同時(shí)也導(dǎo)致了智能手機(jī)電量經(jīng)常在使用者不知情的情況下被消耗。
智能手機(jī)的功耗隨著其軟件生態(tài)和硬件性能的發(fā)展在不斷地提升,對(duì)于手機(jī)開發(fā)者而言,代碼的具體功耗是一個(gè)不得不考慮的問(wèn)題,并且對(duì)手機(jī)開發(fā)者而言,不斷優(yōu)化代碼使得功耗減小、提高手機(jī)的整體續(xù)航是一個(gè)十分有意義的事情。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是:提供一種基于trace文件的代碼功耗測(cè)試方法,該方法不需要對(duì)手機(jī)本身的電路進(jìn)行改造,只需利用一般的功耗測(cè)量設(shè)備進(jìn)行測(cè)量,就可以消除系統(tǒng)本身的功耗帶來(lái)的影響。
本發(fā)明為解決上述技術(shù)問(wèn)題采用以下技術(shù)方案:一種基于trace文件的代碼功耗測(cè)試方法,包括如下步驟:
步驟1,利用功耗測(cè)試設(shè)備測(cè)量代碼運(yùn)行時(shí)間若干倍的功耗數(shù)據(jù),并將該功耗曲線按時(shí)間一分為二,前半段數(shù)據(jù)為代碼功耗測(cè)試數(shù)據(jù),后半段為空閑階段功耗測(cè)試數(shù)據(jù)。利用系統(tǒng)空閑階段的周期性跳變,將代碼功耗的數(shù)據(jù)與空閑階段的功耗數(shù)據(jù)進(jìn)行同步,從而得到兩者的同步時(shí)延;
步驟2,對(duì)步驟1得到的同步時(shí)延,與系統(tǒng)空閑階段的功耗的周期性跳變一樣具有周期性,利用同步時(shí)延的周期性,改變同步時(shí)延的周期數(shù)目,得到一系列的由代碼功耗數(shù)據(jù)減去空閑階段的功耗數(shù)據(jù)得到的實(shí)際功耗數(shù)據(jù),并對(duì)這一系列的實(shí)際功耗曲線利用DBSCAN算法進(jìn)行去噪,然后取均值,得到最終的實(shí)際功耗數(shù)據(jù);
步驟3,結(jié)合步驟2得到的實(shí)際功耗曲線,與trace文件進(jìn)行比對(duì),找到特定代碼的運(yùn)行起止時(shí)間,對(duì)實(shí)際功耗曲線進(jìn)行梯形積分,得到總的代碼執(zhí)行消耗的功耗,最后計(jì)算出平均值作為代碼執(zhí)行期間的功耗。
作為本發(fā)明的一種優(yōu)選方案,所述步驟1的具體測(cè)量過(guò)程為:在測(cè)量代碼的功耗數(shù)據(jù),應(yīng)在代碼執(zhí)行完成后繼續(xù)測(cè)量,并保證測(cè)量時(shí)間足夠長(zhǎng)使得系統(tǒng)進(jìn)入空閑狀態(tài)并出現(xiàn)周期性的功耗跳變,并使得整個(gè)測(cè)量時(shí)間達(dá)到代碼執(zhí)行時(shí)間的10倍。可選地,可以根據(jù)代碼地具體執(zhí)行時(shí)間調(diào)整具體的測(cè)量時(shí)間。
作為本發(fā)明的一種優(yōu)選方案,步驟1中所述同步時(shí)延的計(jì)算具體過(guò)程為:將最終的測(cè)量功耗按時(shí)間分成兩等份,其中第一份為代碼功耗數(shù)據(jù),第二部分為空閑功耗數(shù)據(jù),并將空閑功耗數(shù)據(jù)延時(shí)不同的時(shí)間,并分別計(jì)算延時(shí)后的空閑功耗數(shù)據(jù)與代碼功耗數(shù)據(jù)之間的相關(guān)系數(shù),該相關(guān)數(shù)據(jù)具有周期性,取最小的正延時(shí)作為最終的最小同步時(shí)延。
作為本發(fā)明的一種優(yōu)選方案,所述步驟2的具體過(guò)程為:利用所述步驟1得到的最小同步時(shí)延,加上若干空閑功耗的跳變周期,得到一系列新的同步時(shí)延,并基于這一系列同步時(shí)延對(duì)空閑功耗曲線進(jìn)行延時(shí),得到一系列新的空閑功耗曲線。并將代碼功耗曲線分別與這些空閑功耗相減,得到一系列實(shí)際功耗曲線。
作為本發(fā)明的一種優(yōu)選方案,所述步驟2的去除噪聲的具體過(guò)程為:將所述步驟2中得到的一系列實(shí)際功耗曲線通過(guò)DBSCAN聚類算法進(jìn)行聚類,并把所得最大的聚類里的數(shù)據(jù)取均值,作為去除噪聲后的實(shí)際功耗數(shù)據(jù)。
作為本發(fā)明的一種優(yōu)選方案,所述步驟3中計(jì)算代碼功耗的具體步驟為:首先在需要測(cè)量的代碼中嵌入記錄該代碼執(zhí)行情況的trace代碼,并在程序執(zhí)行結(jié)束后,根據(jù)最后得到的trace文件分析特定代碼的起止時(shí)間,然后對(duì)所述步驟2得到的實(shí)際功耗曲線進(jìn)行積分得到該代碼的能耗,最后對(duì)時(shí)間取均值,得到該代碼的平均功耗。
本發(fā)明采用以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)效果:
1.本發(fā)明基于trace文件的代碼功耗測(cè)試方法,不需要人為地介入監(jiān)督,能夠自己識(shí)別出噪聲點(diǎn),并把誤差盡可能的降低。
2.本發(fā)明基于trace文件的代碼功耗測(cè)試方法,在實(shí)際使用過(guò)程中,不需要再另外對(duì)手機(jī)本身的電路進(jìn)行改造,就能夠盡可能地減少手機(jī)系統(tǒng)本身功耗帶來(lái)地影響,靈活方便,使用快捷,對(duì)測(cè)試手機(jī)地?fù)p傷小。
附圖說(shuō)明
圖1是本發(fā)明基于trace文件的代碼功耗測(cè)試方法的整體架構(gòu)圖。
圖2是本發(fā)明中DBSCAN算法的一般模型圖。
圖3是實(shí)施例中采用本發(fā)明基于DBSCAN算法的代碼實(shí)際功耗數(shù)據(jù)去噪的流程圖。
具體實(shí)施方式
下面詳細(xì)描述本發(fā)明的實(shí)施方式,所述實(shí)施方式的示例在附圖中示出。下面通過(guò)參考附圖描述的實(shí)施方式是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。
如圖1所示,本發(fā)明主要通過(guò)一功耗測(cè)量系統(tǒng)來(lái)實(shí)現(xiàn)數(shù)據(jù)測(cè)量與分析,該功耗測(cè)量系統(tǒng)與測(cè)試手機(jī)連接,采集相關(guān)數(shù)據(jù)。具體地,
通過(guò)數(shù)據(jù)處理模塊采集第一時(shí)間測(cè)試時(shí)間段的消耗功率和第二時(shí)間段的消耗功率,其中,在第一測(cè)試時(shí)間段內(nèi),待測(cè)程序運(yùn)行;第二測(cè)試時(shí)間段內(nèi),待測(cè)程序不運(yùn)行。因此第一測(cè)試時(shí)間段的消耗功率包括系統(tǒng)自身運(yùn)行所需的功率和待測(cè)程序運(yùn)行所需的功率;第二測(cè)試時(shí)間段的消耗功率為系統(tǒng)自身運(yùn)行所需的功率。為了提高測(cè)量的準(zhǔn)確性,第一測(cè)試時(shí)間為待測(cè)程序運(yùn)行時(shí)間的3倍以上。通過(guò)求平均的方式減少測(cè)量誤差。
理論上,為了提高測(cè)試的準(zhǔn)確性,第一時(shí)間段內(nèi)的系統(tǒng)自身運(yùn)行消耗的功率應(yīng)等于第二時(shí)間段內(nèi)的系統(tǒng)自身運(yùn)行消耗的功率,從而能夠準(zhǔn)確計(jì)算出待測(cè)程序運(yùn)行所消耗的功率。但是實(shí)際上,第一測(cè)試時(shí)間段內(nèi),系統(tǒng)本身運(yùn)行的代碼和第二時(shí)間段內(nèi)的不完全相同,消耗的功率會(huì)略有差別。為了減少誤差,可以通過(guò)延長(zhǎng)第一測(cè)試時(shí)間和第二測(cè)試時(shí)間,同時(shí)通過(guò)相關(guān)的算法對(duì)數(shù)據(jù)進(jìn)行清洗,減少明顯的偏差。
在第一測(cè)試時(shí)間段內(nèi),待測(cè)程序中的相關(guān)單元運(yùn)行若干次,為了計(jì)算待測(cè)程序中的各個(gè)單元的耗能情況,采集trace文件中的數(shù)據(jù),提取代碼運(yùn)行時(shí)間,通過(guò)各個(gè)代碼運(yùn)行時(shí)間和對(duì)應(yīng)該時(shí)間內(nèi)的功率消耗,計(jì)算各個(gè)單元的總耗能,從而對(duì)各個(gè)單元的耗能情況進(jìn)行統(tǒng)計(jì),如果某個(gè)單元的耗能過(guò)高,可以針對(duì)該單元進(jìn)行代碼優(yōu)化,從而降低程序的功耗。
總之,本發(fā)明的主要過(guò)程如上所述,通過(guò)采集系統(tǒng)的功耗數(shù)據(jù),以及trace文件中軟件代碼的運(yùn)行時(shí)間,對(duì)代碼的功耗進(jìn)行統(tǒng)計(jì),從而獲得耗能情況。進(jìn)而有針對(duì)性的進(jìn)行優(yōu)化。
在某個(gè)案例中,一種基于trace文件的代碼功耗測(cè)試方法,包括如下步驟:功耗數(shù)據(jù)的測(cè)量與同步時(shí)延的計(jì)算,計(jì)算實(shí)際功耗數(shù)據(jù)并去噪,代碼的功耗的計(jì)算。
功耗數(shù)據(jù)的測(cè)量與同步時(shí)延的計(jì)算,利用系統(tǒng)空閑時(shí)間的周期性功耗跳變進(jìn)行提?。挥?jì)算實(shí)際功耗數(shù)據(jù)并去噪采用“基于DBSCAN的數(shù)據(jù)去噪”方法進(jìn)行篩選;基于trace文件代碼的功耗的計(jì)算利用trace文件與去噪后的實(shí)際功耗曲線相結(jié)合進(jìn)行計(jì)算。
所述功耗數(shù)據(jù)的測(cè)量過(guò)程中,首先關(guān)閉被測(cè)試手機(jī)的所有后臺(tái)軟件以減少其他軟件對(duì)功耗測(cè)試帶來(lái)的影響,待系統(tǒng)穩(wěn)定后執(zhí)行待測(cè)試的代碼,并同時(shí)利用功耗測(cè)試設(shè)備記錄手機(jī)功耗數(shù)據(jù),并在代碼執(zhí)行結(jié)束后繼續(xù)記錄功耗數(shù)據(jù),一直到200s為止。
功耗記錄的時(shí)間可以為其他數(shù)字,但要保證至少是代碼總共運(yùn)行的時(shí)間的至少4倍及以上,并且在后半段時(shí)間內(nèi)至少出現(xiàn)20次及以上的空閑功耗的周期性跳變,以獲得準(zhǔn)確的同步時(shí)延與去噪效果。
所述同步時(shí)延的計(jì)算過(guò)程中,首先將測(cè)量的功耗數(shù)據(jù)按照時(shí)間先后順序等分為P1與P2兩部分,其中P1除了包含有代碼運(yùn)行的功耗外,還包括了代碼運(yùn)行結(jié)束后的空閑功耗數(shù)據(jù),P2則只含有空閑功耗數(shù)據(jù)。對(duì)P2進(jìn)行不同程度地延時(shí),并分別計(jì)算與P1計(jì)算相關(guān)系數(shù),由于空閑功耗曲線周期性地功耗跳變,所獲得的相關(guān)系數(shù)也具有周期性,把相關(guān)系數(shù)在第一個(gè)正周期時(shí)間內(nèi)得到最大值的時(shí)間點(diǎn)記為最小同步時(shí)延tδ。
進(jìn)一步地,所述計(jì)算實(shí)際功耗數(shù)據(jù)并去噪過(guò)程中,利用DBSCAN算法的良好的去噪性能進(jìn)行噪聲的去除。首先,基于最小同步時(shí)延tδ得到通用的同步時(shí)延t’。并利用t’對(duì)P2進(jìn)行不同程度地延時(shí)得到一系列不同地空閑功耗曲線,再將P1減去這些空閑功耗曲線得到一系列實(shí)際能耗曲線(功耗數(shù)據(jù))P0。
t’=(tδ+t0×n),
P0=P1-P2(t-t’),
其中,t0表示空閑功耗數(shù)據(jù)地跳變周期,t’表示通用的同步時(shí)延,t是一個(gè)變量表示時(shí)間,n∈Z,當(dāng)同步時(shí)延t’為負(fù)數(shù)時(shí)表示對(duì)時(shí)間序列進(jìn)行左移處理,當(dāng)t’為正數(shù)時(shí)表示對(duì)時(shí)間序列進(jìn)行右移處理。
如圖3所示,將n取34個(gè)不同地?cái)?shù)值,得到34個(gè)不同的P0數(shù)據(jù),并對(duì)這些數(shù)據(jù)按照時(shí)間維度進(jìn)行加窗,并對(duì)窗口內(nèi)的數(shù)據(jù)進(jìn)行DBSCAN算法聚類,保留最大的聚類并取均值,作為該窗口內(nèi)去噪后的實(shí)際功耗數(shù)據(jù)。接著滑動(dòng)窗口,對(duì)下一個(gè)窗口內(nèi)的數(shù)據(jù)進(jìn)行處理,直到處理完所有的數(shù)據(jù)。
其中,利用DBSCAN去噪的算法中有四個(gè)重要的參數(shù),分別是以P為中心點(diǎn)的鄰域內(nèi)的最少點(diǎn)的數(shù)量minPts、num、半徑eps、rate。minPts表示核心點(diǎn)指定區(qū)域內(nèi)密度最低值,num表示某一點(diǎn)指定區(qū)域內(nèi)的密度值,eps為指定區(qū)域的半徑,rate是對(duì)指定區(qū)域半徑的修正系數(shù)。在DBSCAN算法中,如圖2,對(duì)與一個(gè)給定的點(diǎn),以該點(diǎn)為圓心,以eps為半徑的范圍內(nèi)的其他點(diǎn)的個(gè)數(shù)記為nd,當(dāng)nd大于等于minPts時(shí),記該點(diǎn)為核心點(diǎn);本次項(xiàng)目中,nd大于1而小于minPts時(shí),記該點(diǎn)為邊界點(diǎn),邊界點(diǎn)的分類需要根據(jù)它能夠密度可達(dá)的核心點(diǎn)的分類決定;當(dāng)nd小于1時(shí),該點(diǎn)為不屬于任何分類的噪聲點(diǎn)。其中半徑eps的選取方式如下:
epsn=eps×rate,
其中,該公式中的X表示需要聚類的向量集合所形成的矩陣,n是向量的維數(shù),m是向量的個(gè)數(shù)。max(X)是X矩陣每個(gè)維度最大的數(shù)值形成的新的向量,min(X)是X矩陣每個(gè)維度最小的數(shù)值形成的新的向量,prod用以計(jì)算向量各個(gè)維度的乘積。為了能夠動(dòng)態(tài)調(diào)整該算法的去噪效果,利用rate對(duì)eps進(jìn)行約束,得到新的epsn。
可選地,minPts、num、eps、rate都不是固定值,可以根據(jù)數(shù)據(jù)量的規(guī)模調(diào)整,直到取得良好的去噪效果為止。
進(jìn)一步地,在所述代碼的功耗的計(jì)算時(shí),根據(jù)trace文件中代碼的執(zhí)行起止時(shí)間,與去噪后的P0數(shù)據(jù)對(duì)照,并對(duì)去噪后的P0進(jìn)行梯形積分,得到被測(cè)試的特定代碼的執(zhí)行總能耗,然后利用總能耗對(duì)時(shí)間取均值,得到該代碼執(zhí)行期間的平均功耗。
以上實(shí)施例僅為說(shuō)明本發(fā)明的技術(shù)思想,不能以此限定本發(fā)明的保護(hù)范圍,凡是按照本發(fā)明提出的技術(shù)思想,在技術(shù)方案基礎(chǔ)上所做的任何改動(dòng),均落入本發(fā)明保護(hù)范圍之內(nèi)。以上詳細(xì)描述了本發(fā)明的優(yōu)選實(shí)施方式,但是,本發(fā)明并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行多種等同變換,這些等同變換均屬于本發(fā)明的保護(hù)范圍。另外需要說(shuō)明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過(guò)任何合適的方式進(jìn)行組合。為了避免不必要的重復(fù),本發(fā)明對(duì)各種可能的組合方式不再另行說(shuō)明。