Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 代碼JIT友好度檢測工具

Android 代碼JIT友好度檢測工具

編輯:關於Android編程

利用周末的時間,寫了一個檢測Android代碼JIT友好度的工具,取個名字為DroidJitChecker。希望可以幫助大家快速發現有壞味道的代碼,並且及時修正。

名詞解釋

  1. JIT:JIT全稱Just-in-time compilation。意思為實時編譯,是JVM中一種優化技術,對頻繁調用並且符合條件的方法進行優化將字節碼翻譯成機器代碼,提升執行效率。
  2. 方法大小:每個方法的方法體實現都可用字節作為單位進行衡量,通常情況下,方法體越大,其方法大小也越大。
  3. JIT友好:通常方法體實現越小越簡單,越對JIT編譯友好。

這是什麼

  1. 這是一個檢測Android(目錄組織結構)代碼JIT友好度的工具
  2. 該工具基於AdoptOpenJDK/jitwatch中的jarScan.sh進行組裝
  3. 輸出結果支持html,便於在浏覽器中查看

前提准備

  1. 所檢測Android項目可以支持Gradle編譯成功
  2. 安裝jitwatch套件
  3. ruby運行環境

安裝

安裝jitwatch組件

獲取代碼

git clone [email protected]:AdoptOpenJDK/jitwatch.git

編譯

進入上面的repo目錄,采用以下三種方法之一即可

ant

ant clean compile test run

Maven

mvn clean compile test exec:java

Gradle

gradlew clean build run

配置

獲取本repo的代碼,並打開config.ini文件修改

[setup]
jarScan = "/Users/androidyue/github/jitwatch/jarScan.sh"
maxMethodSize = 325
outputDir = "/tmp/DroidJitChecker/output_new/"

修改說明

  1. jarScan 必須修改,修改成已經安裝的的JarScan路徑
  2. maxMethodSize 無需更改,如更改請謹慎
  3. 輸出目錄,outputDir,建議修改為可以持續存在的目錄

如何使用

使用比較簡單,打開終端,執行如下語句

ruby jitChecker.rb your_android_project jarTask

注意:jarTask是一個將工程的java文件編譯成jar包的任務,可以通過執行./gradlew tasks 查看,然後選擇以jar開頭的任務即可。

查看結果

  1. 檢查結束後,會自動使用浏覽器打開結果
  2. 結果文件路徑也會輸出到終端
  3. 結果文件名中包含了相關的jarTask信息,便於查找
  4. 結果內容,依照方法的字節大小,從大到小降序排列

一個典型的內容示例

MD4.mdfour64

Package:com.app.utils
Parameters:int[]
ByteSize:1129
  1. MD4.mdfour64 對JIT不友好的方法及其所屬類
  2. Package:com.app.utils 上述MD4所屬的包
  3. Parameters:int[] mdfour64方法接受的參數
  4. ByteSize:1129 表示mdfour64方法持有的大小

如何解決

  1. 書寫邏輯簡單,職責單一的小方法
  2. 書寫邏輯簡單,職責單一的小方法
  3. 書寫邏輯簡單,職責單一的小方法

貢獻代碼

任何有幫助的建議都歡迎。

以下代碼貢獻更收歡迎

美化結果展示頁面(HTML,CSS)

問題

問:字節量大的方法一定要修改麼,修改後就能JIT編譯麼

答:字節量大的方法建議修改,非強制,修改後不一定就能JIT編譯,因為對JIT優化並不意味著JIT就編譯該方法,還需要其他因素,比如該方法的調用頻率。所以這是一個你情我願的事情。

為什麼用Ruby

答:有了idea時很糾結,因為不確定用什麼語言實現,尤其是在Python和ruby之間,為此問了不少同學,最後“一意孤行”決定用Ruby了,不喜歡Python的強制對齊,超級喜歡Ruby的字符串模板。Ruby很簡單,很人性化,相信你會喜歡的。

源碼

DroidJitChecker@Github

以上就是對Android JIT 代碼友好度檢測工具的資料整理,謝謝大家對本站的支持!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved