[發明專利]優化OAT中冗余指令的方法及移動終端有效
| 申請號: | 201710492281.0 | 申請日: | 2017-06-26 |
| 公開(公告)號: | CN107133085B | 公開(公告)日: | 2020-10-27 |
| 發明(設計)人: | 呂偉 | 申請(專利權)人: | 珠海大橫琴科技發展有限公司 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455 |
| 代理公司: | 北京華識知識產權代理有限公司 11530 | 代理人: | 劉艷玲 |
| 地址: | 519000 廣東省珠海市橫琴新*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 優化 oat 冗余 指令 方法 移動 終端 | ||
本發明公開了一種移動終端,其包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的優化OAT中冗余指令的程序,優化OAT中冗余指令的程序被處理器執行時實現如下步驟:獲取OAT文件中最小本地指令塊內包含的數據傳輸指令;獲取各所述數據傳輸指令的頂點和數據傳輸方向并存儲于有向圖鄰接矩陣中;根據所述有向圖鄰接矩陣計算各所述頂點的出度和入度并判斷所述頂點的出度和入度是否相同;若所述頂點的出度和入度相同,則判定所述頂點為冗余頂點;獲取包含所述冗余頂點的數據傳輸指令,并進行優化。與現有技術相比,本發明實現了對OAT文件中的本地指令中的數據傳輸指令進行優化,去除冗余的數據傳輸指令。
技術領域
本發明涉及移動終端技術領域,尤其涉及一種優化OAT中冗余指令的方法及移動終端。
背景技術
Java虛擬機屏蔽了具體的硬件平臺,使Java成為跨平臺的語言,進而使得Java成為最受歡迎的高級語言之一。但Java虛擬機的運行效率一直為人詬病。雖然Android的Dalvik虛擬機做了很多改進,但與本地指令比起來,Dalvik的執行效率依然很低。為此,Android在kikat后引入art虛擬機,apk中的dex文件經過優化后生成oat格式的文件,Oat格式的文件是elf文件的一種,Oat文件里面不僅有dex指令,更重要的是有dex指令對應的本地指令,以前需要在Dalvik虛擬機上執行dex指令,現在直接執行對應的本地指令即可。如此一來,大大提高了執行效率。然而,OAT文件中的本地指令存在較大的冗余,導致OAT文件的體積較大,浪費內存空間,且冗余指令較多也降低了代碼執行速度。
因此,有必要提供一種優化OAT中冗余指令的方法及移動終端來解決上述技術問題。
發明內容
本發明的主要目的在于提出一種優化OAT中冗余指令的方法及移動終端,旨在解決OAT文件的本地指令中存在較多冗余指令,導致OAT文件的體積較大,浪費內存空間,且影響代碼執行速度的技術問題。
首先,為實現上述目的,本發明提供一種移動終端,所述移動終端包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的優化OAT中冗余指令的程序,所述優化OAT中冗余指令的程序被所述處理器執行時實現如下步驟:
獲取OAT文件中最小本地指令塊內包含的數據傳輸指令,其中所述最小本地指令塊為不包含判斷邏輯的本地指令塊;
獲取各所述數據傳輸指令的頂點和數據傳輸方向并將所述頂點和所述數據傳輸方向存儲于有向圖鄰接矩陣中;
根據所述有向圖鄰接矩陣計算各所述頂點的出度和入度并判斷所述頂點的出度和入度是否相同;
若所述頂點的出度和入度相同,則判定所述頂點為冗余頂點;
獲取包含所述冗余頂點的數據傳輸指令,并將以所述冗余頂點作為目的地址的數據傳輸指令和以所述冗余頂點作為源地址的數據傳輸指令優化為一條數據傳輸指令。
可選地,所述處理器還用于執行所述優化OAT中冗余指令的程序,以實現如下步驟:
獲取包含所述冗余頂點的數據傳輸指令,其中所述數據傳輸指令包括將所述冗余頂點作為目的地址的第一數據傳輸指令和將所述冗余頂點作為源地址的第二數據傳輸指令;
將所述第一數據傳輸指令標記為無效數據傳輸指令;
將所述第二數據傳輸指令的源地址修改為所述第一數據傳輸指令的源地址;
刪除所述無效數據傳輸指令。
可選地,所述處理器還用于執行所述優化OAT中冗余指令的程序,以實現如下步驟:
在所述有向圖鄰接矩陣中存儲所述數據傳輸指令的地址;
從所述有向圖鄰接矩陣中查找包含所述冗余頂點的數據傳輸指令的地址;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于珠海大橫琴科技發展有限公司,未經珠海大橫琴科技發展有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710492281.0/2.html,轉載請聲明來源鉆瓜專利網。





