System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及安卓應用優化,具體涉及一種基于代碼重構的安卓應用能耗優化方法。
技術介紹
1、安卓應用程序在運行時的能耗表現是評估其質量屬性的核心要素之一,它直接關系到用戶的使用體驗以及設備的續航能力。隨著安卓應用程序的不斷發展,原有的設計可能會變得不在適應新的需求或環境,其錯誤修復和新功能的持續引入,可能會影響其初始設計的代碼質量。這種現象被學術界稱為“軟件衰減”,它通常表現為設計缺陷或反模式。在軟件工程領域,代碼重構被視作一種系統化、嚴謹且持續進行的代碼優化過程,其核心目標是在不改變軟件系統外部行為和功能的前提下,通過調整和優化內部代碼結構,可以改善代碼的設計缺陷,從而實現軟件質量的顯著提升。此外,已有大量的研究發現不同類型的代碼重構會對應用程序的能耗有不同的影響,有的代碼重構可能會導致運行時的能耗上升,有的則會降低其運行時的能耗,因此代碼重構除了可以提升軟件的質量屬性外,同時也在一定程度上可以改善安卓應用運行時的能耗。為此,如何在給定的按照一定順序排列的代碼重構集中找到一條最優的代碼重構序列使得安卓應用運行時的能耗最低這一問題仍面臨以下挑戰:(1)龐大且離散的重構序列空間;若給定一個安卓應用程序的重構集中的重構個數為100個,則對應重構選擇空間為2100≈1030,如此龐大且離散的重構序列選擇空間,給快速獲取高質量解帶來了很大的挑戰。(2)重構序列能效評估耗時長;對重構序列的能效進行評估時,需要執行重構序列對應的各種重構操作、將重構后代碼打包成apk、安裝apk和驅動運行等耗時步驟。在對安卓應用能耗進行改進的代碼重構技術方面
技術實現思路
1、本專利技術的目的在于提供一種基于代碼重構的安卓應用能耗優化方法,該方法有利于從龐大且離散的代碼重構選擇空間中快速獲得高質量解,從而優化應用能耗。
2、為了實現上述目的,本專利技術采用的技術方案是:一種基于代碼重構的安卓應用能耗優化方法,根據待優化安卓應用的推薦重構集,通過改進遺傳算法,找到一條最優重構序列,以使待優化安卓應用運行時的能耗達到最低,具體包括以下步驟:
3、s1、輸入初始種群大小n、變異概率p、交叉概率q、最大演化代數tmax、待優化安卓應用源碼app、代碼重構能效比較模型cm和待優化安卓應用的推薦重構集r;
4、s2、初始化種群p(t),隨機生成以二進制表示的個體,其中個體數為n,個體長度與待優化安卓應用的推薦重構集r的長度相同;令演化代數t=1;
5、s3、利用待優化安卓應用源碼app、待優化安卓應用的推薦重構集r以及代碼重構能效比較模型cm構建待優化安卓應用的解優劣預測模型m;
6、s4、當演化代數t小于最大演化代數tmax時,循環執行步驟s5-s9,直至演化代數t達到最大演化代數tmax,往下執行步驟s10;
7、s5、用原始種群p(t)復制一份臨時種群q(t);
8、s6、對臨時種群q(t)執行交叉操作生成臨時種群q(t)1;將臨時種群q(t)1與原始種群p(t)合并生成新種群p(t)1;
9、s7、對種群p(t)1執行變異操作生成臨時種群p(t)2;
10、s8、利用解優劣預測模型m和臨時種群p(t)2,通過基于優劣比較的候選解選擇策略生成下一代種群p(t+1);
11、s9、令演化代數t=t+1;
12、s10、得到最優個體x,即種群p(t+1)中的第0號位置;
13、s11、利用最優個體x和待優化安卓應用的推薦重構集r,獲得最優重構序列x*。
14、進一步地,步驟s2中,初始化種群的具體方法為:
15、在初始化種群階段,首先將解以二進制向量的形式表示;該向量的長度與待優化安卓應用的推薦重構集中重構數量保持一致;其中,向量中的每個元素對應一個重構的保留或刪除決策:0代表刪除對應位置的重構,1代表保留對應位置的重構;然后,采用隨機生成的方式,產生與待優化安卓應用的推薦重構集中重構個數相匹配的二進制向量;不斷重復這一隨機生成過程,直至生成的向量總數達到預定的種群規模;通過這種方式構建得到初始種群。
16、進一步地,步驟s3中,構建解優劣預測模型的具體方法為:
17、首先隨機生成兩個與待優化安卓應用的推薦重構集相同長度的0、1向量r1和r2,并將r1與r2進行同位置相減處理,生成一組新的向量r3,向量r3由-1、0、1組成;然后將待優化安卓應用的推薦重構集按照生成的向量r1和r2進行處理:如果某一位置為0,就刪除對應位置的重構實例,如果某一位置為1,就保留對應位置的重構實例,從而生成兩個重構序列rs1和rs2,而后分別實現這兩個重構序列并編譯為apk文件,接著利用這兩個apk文件選擇對應的測試用例,并代入代碼重構能效比較模型,獲得結果1或-1;最后將向量r3作為特征,代碼重構能效比較模型結果作為標簽,得到解優劣預測模型的訓練數據集,并通過訓練算法獲得待優化安卓應用的解優劣預測模型。
18、進一步地,選擇測試用例時,基于apk名稱和因重構而變動的方法列表來匹配相應的測試用例,具體為:
19、當給定apk名稱和變動方法列表時,首先判斷是否已存在一個與給定apk名稱和變動方法列表匹配的測試用例表,如果存在,直接查找變動方法列表對應的測試用例并輸出,如果不存在,則根據測試用例對應執行方法路徑表來創建一個新的測試用例表。
20、進一步地,獲取解優劣預測模型的訓練數據集的具體方法為:
21、首先隨機生成兩個與待優化安卓應用的推薦重構集相同長度的0、1向量r1和r2,并將r1與r2每一位置進行相減處理,生成一組新的向量r3;對于向量r3,如果某一位置為-1,表示向量r1中該位置為0,r2中該位置為1,即表示r1中不選擇該重構,而r2中選擇該重構;如果某一位置為0,即表示兩個向量同時選或者不選該重構,對安卓應用運行時的動態特征改變是一樣的;如果某一位置為1,表示向量r1中該位置為1,r2中該位置為0,即表示r1中選擇該重構,而r2中不選擇該重構;生成兩個重構序列rs1和rs2;接著按照這兩個重構序列分別對待優化安卓應用源代碼進行修改,即實現這兩個重構序列,并編譯、打包成apk文件;最后將兩個apk文件代入代碼重構能效比較模型,同時選擇合適的測試用例驅動apk的運行,獲得標簽1或-1;此時將向量r3與標簽合并,即得到解優劣預測模型的一條訓練數據;
22、重復以上操作設定次數,即可構建得到解優劣預測模型的訓練數據本文檔來自技高網...
【技術保護點】
1.一種基于代碼重構的安卓應用能耗優化方法,其特征在于,根據待優化安卓應用的推薦重構集,通過改進遺傳算法,找到一條最優重構序列,以使待優化安卓應用運行時的能耗達到最低,具體包括以下步驟:
2.根據權利要求1所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,步驟S2中,初始化種群的具體方法為:
3.根據權利要求1所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,步驟S3中,構建解優劣預測模型的具體方法為:
4.根據權利要求3所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,選擇測試用例時,基于apk名稱和因重構而變動的方法列表來匹配相應的測試用例,具體為:
5.根據權利要求3所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,獲取解優劣預測模型的訓練數據集的具體方法為:
6.根據權利要求3所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,所述訓練算法采用隨機森林算法,用于構建待優化安卓應用的解優劣預測模型。
7.根據權利要求1所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,步驟S6中,交
8.根據權利要求1所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,步驟S7中,變異操作對當前種群中的個體進行隨機擾動,其遍歷種群中的每一個個體,在滿足變異條件時,隨機選擇一個位置并改變其值,即將0變為1或將1變為0。
9.根據權利要求1所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,基于優劣比較的候選解選擇策略的具體實現方法為:
...【技術特征摘要】
1.一種基于代碼重構的安卓應用能耗優化方法,其特征在于,根據待優化安卓應用的推薦重構集,通過改進遺傳算法,找到一條最優重構序列,以使待優化安卓應用運行時的能耗達到最低,具體包括以下步驟:
2.根據權利要求1所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,步驟s2中,初始化種群的具體方法為:
3.根據權利要求1所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,步驟s3中,構建解優劣預測模型的具體方法為:
4.根據權利要求3所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,選擇測試用例時,基于apk名稱和因重構而變動的方法列表來匹配相應的測試用例,具體為:
5.根據權利要求3所述的基于代碼重構的安卓應用能耗優化方法,其特征在于,獲取解優劣預測模型的訓...
【專利技術屬性】
技術研發人員:倪友聰,杜欣,吳允平,方定邦,
申請(專利權)人:福建師范大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。