AndroidDev 板


LINE

※ 引述《gn00618777 (非常念旧)》之铭言: : 我查询了网路上以及书本 : 版本1: JIT是将source code 转换成 byte code之後,在程式执行期间 : 再将byte code编译成机械码。 : 版本2: 拥有JIT表示Dalvik将APP的byte code转换成二进制组合指令,那将 : 以原生方式执行在目标的CPU上,而不是由VM一次解译一条指令。 : 这两者,哪种比较对阿.....版本1说得好像就是执行期间,需要才编译成机械码。 : 这和版本2是直接说"不是由VM一次解译一条指令"好像有点抵触,希望能为我解惑, : 谢谢。版本2出自於O'REILY翻译的书,我个人觉得翻译的好烂,前因後果要自己兜起来。 基本上两种说法并不相冲 第一点说的是 一般编译式语言会利用 compiler 把 source code compile 成 native code 执行时 CPU 直接执行 native code (其实会先有 OS 分析档案结构啦) 但是像 Java 或 C# 这类半直译式的语言则不同 他们首先会将 source code 编译成 intermediate languate (IL) 通常会是类似一种抽象机器的组语,以 Java 来说就是 byte code 当你要执行 IL 档,就需要 dynamic binary translation (DBT) 将 IL 在 runtime 转换成 native code, 这就是 JVM 要做的事。 DBT 的方式有很多种,最简单的就是最古老的 interpreter 他会把指令一个一个读进来,每次翻译一个指令,执行完读下一个指令 非常的直觉,基本上没有什麽问题 但是这样的坏处是很多编译器的最佳化都无法实作 而且如果一个指令做了很多次,每次都需要翻译一次很没效率 所以现在的 translation 通常会有两种技术 一是 translation block, 顾名思义就是一次翻译一个 block 像是以 jmp 指令爲边界或是一个 method 二是 code cache, 也就是把翻译过的 block 存起来 以後遇到需要执行这个 block 就直接执行 cache 里翻完的 code 这就是第二点说的不是一条一条翻译。 DBT 其实还可以做很多优化,像是把常一起执行的 block 串联起来之类的 还有根据不同的时间热门程式区块不同而改变程式 binary layout 另外一提, JIT 有可能一开始先用类似原始 interpreter 的方式 等到发现热区才实作上面的最佳化 也有可能一开始就是翻译一个区块 最佳化的程度会影响 start up 的时间 如果花老半天做最佳化,结果只执行一次就亏大了 由於我不清楚 dalvik 的实作,所以不知道是哪种 上一位大大的说法看起来像是先一行一行之後再翻译 block 至於 ART,上面的大大有提到了 AOT是类似 static binary translation (SBT) 不过由於有其限制,所以其实现在任何 SBT 的技术 都很难将一个复杂的系统完全 static 翻译成 native code 通常还是有 dyanmic 的成分在 我也没有去读 ART 的资料和 code,不好说 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.34.244.41
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1407856610.A.AF8.html ※ 编辑: carylorrk (1.34.244.41), 08/12/2014 23:43:34







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP