欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 代碼JIT友好度檢測工具

 更新時(shí)間:2016年08月31日 14:51:37   作者:技術(shù)小黑屋  
本文主要介紹一個(gè)Android代碼JIT友好度檢測工具,這里對(duì)JIT工具的資料做了一下整理,有需要的小伙伴可以參考下

利用周末的時(shí)間,寫了一個(gè)檢測Android代碼JIT友好度的工具,取個(gè)名字為DroidJitChecker。希望可以幫助大家快速發(fā)現(xiàn)有壞味道的代碼,并且及時(shí)修正。

名詞解釋

  1. JIT:JIT全稱Just-in-time compilation。意思為實(shí)時(shí)編譯,是JVM中一種優(yōu)化技術(shù),對(duì)頻繁調(diào)用并且符合條件的方法進(jìn)行優(yōu)化將字節(jié)碼翻譯成機(jī)器代碼,提升執(zhí)行效率。
  2. 方法大?。好總€(gè)方法的方法體實(shí)現(xiàn)都可用字節(jié)作為單位進(jìn)行衡量,通常情況下,方法體越大,其方法大小也越大。
  3. JIT友好:通常方法體實(shí)現(xiàn)越小越簡單,越對(duì)JIT編譯友好。

這是什么

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

前提準(zhǔn)備

  1. 所檢測Android項(xiàng)目可以支持Gradle編譯成功
  2. 安裝jitwatch套件
  3. ruby運(yùn)行環(huán)境

安裝

安裝jitwatch組件

獲取代碼

git clone git@github.com:AdoptOpenJDK/jitwatch.git

編譯

進(jìn)入上面的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 必須修改,修改成已經(jīng)安裝的的JarScan路徑
  2. maxMethodSize 無需更改,如更改請(qǐng)謹(jǐn)慎
  3. 輸出目錄,outputDir,建議修改為可以持續(xù)存在的目錄

如何使用

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

ruby jitChecker.rb your_android_project jarTask

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

查看結(jié)果

  1. 檢查結(jié)束后,會(huì)自動(dòng)使用瀏覽器打開結(jié)果
  2. 結(jié)果文件路徑也會(huì)輸出到終端
  3. 結(jié)果文件名中包含了相關(guān)的jarTask信息,便于查找
  4. 結(jié)果內(nèi)容,依照方法的字節(jié)大小,從大到小降序排列

一個(gè)典型的內(nèi)容示例

MD4.mdfour64

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

如何解決

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

貢獻(xiàn)代碼

任何有幫助的建議都?xì)g迎。

以下代碼貢獻(xiàn)更收歡迎

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

問題

問:字節(jié)量大的方法一定要修改么,修改后就能JIT編譯么

答:字節(jié)量大的方法建議修改,非強(qiáng)制,修改后不一定就能JIT編譯,因?yàn)閷?duì)JIT優(yōu)化并不意味著JIT就編譯該方法,還需要其他因素,比如該方法的調(diào)用頻率。所以這是一個(gè)你情我愿的事情。

為什么用Ruby

答:有了idea時(shí)很糾結(jié),因?yàn)椴淮_定用什么語言實(shí)現(xiàn),尤其是在Python和ruby之間,為此問了不少同學(xué),最后“一意孤行”決定用Ruby了,不喜歡Python的強(qiáng)制對(duì)齊,超級(jí)喜歡Ruby的字符串模板。Ruby很簡單,很人性化,相信你會(huì)喜歡的。

源碼

DroidJitChecker@Github

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

相關(guān)文章

  • 如何從外部瀏覽開啟Android App

    如何從外部瀏覽開啟Android App

    從瀏覽器中點(diǎn)擊某個(gè)按鈕,如果手機(jī)上裝有相應(yīng)的app,則直接開啟app,并且到相對(duì)的頁面。如果沒有裝該app,則會(huì)到相應(yīng)的下載app的界面。這樣的功能怎么實(shí)現(xiàn)呢,本文帶著大家來看看如何實(shí)現(xiàn)。
    2021-06-06
  • Android仿zaker用手向上推動(dòng)的特效開發(fā)【推動(dòng)門效果】(附demo源碼下載)

    Android仿zaker用手向上推動(dòng)的特效開發(fā)【推動(dòng)門效果】(附demo源碼下載)

    這篇文章主要介紹了Android仿zaker用手向上推動(dòng)的特效,結(jié)合完整實(shí)例形式分析了Android滑動(dòng)切換效果的實(shí)現(xiàn)步驟與相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • Android仿QQ可拉伸頭部控件

    Android仿QQ可拉伸頭部控件

    這篇文章主要為大家詳細(xì)介紹了Android仿QQ可拉伸頭部控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Android開發(fā)之拖動(dòng)條和評(píng)分組件用法分析

    Android開發(fā)之拖動(dòng)條和評(píng)分組件用法分析

    這篇文章主要介紹了Android開發(fā)之拖動(dòng)條和評(píng)分組件用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android拖動(dòng)條及評(píng)分組件的布局與功能實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • 詳解Android Selinux 權(quán)限及問題

    詳解Android Selinux 權(quán)限及問題

    本篇文章主要介紹了詳解Android Selinux 權(quán)限及問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Android AutoValue使用和擴(kuò)展庫

    Android AutoValue使用和擴(kuò)展庫

    今天小編就為大家分享一篇關(guān)于Android AutoValue使用和擴(kuò)展庫的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 簡析Android五大布局(LinearLayout、FrameLayout、RelativeLayout等)

    簡析Android五大布局(LinearLayout、FrameLayout、RelativeLayout等)

    這篇文章主要為大家簡單分析了Android五大布局,內(nèi)容有LinearLayout、FrameLayout、RelativeLayout、AbsoluteLayout和TableLayout的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android Studio實(shí)現(xiàn)幀動(dòng)畫

    Android Studio實(shí)現(xiàn)幀動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了Android Studio實(shí)現(xiàn)幀動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Android統(tǒng)一處理登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)到目標(biāo)頁面的方式

    Android統(tǒng)一處理登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)到目標(biāo)頁面的方式

    我們?cè)陂_發(fā)的時(shí)候,一定會(huì)遇到頁面跳轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于Android統(tǒng)一處理登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)到目標(biāo)頁面的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • AndriodStudio使用listview實(shí)現(xiàn)簡單圖書管理

    AndriodStudio使用listview實(shí)現(xiàn)簡單圖書管理

    這篇文章主要為大家詳細(xì)介紹了AndriodStudio使用listview實(shí)現(xiàn)簡單圖書管理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論