android面试-ART与Dalvik
来源:互联网 发布:伊顿公学 知乎 编辑:程序博客网 时间:2024/05/20 02:54
一、ART与Dalvik区别:
ART 的机制与 Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器(just in time ,JIT)转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动(首次)和执行都会变得更加快速。
一般来说,基于堆栈的机器必须使用指令才能从堆栈上的加载和操作数据,因此,相对基于寄存器的机器,它们需要更多的指令才能实现相同的性能。但是基于寄存器机器上的指令必须经过编码,因此,它们的指令往往更大。
二、Stack-Based虚拟机
一个基于Stack的虚拟机会通过IP来获取操作数,其操作数都是保存在Stack数据结构中,从栈中取出数据、计算然后再将结果存入栈中(LIFO,Last in first out)。如下就是一个典型的计算20+7在栈中的计算过程:
2、POP 7
3、ADD 20, 7, result
4、PUSH result
三、Register-Based虚拟机
基于寄存器的虚拟机,它们的操作数是存放在CPU的寄存器的。没有入栈和出栈的操作和概念。但是执行的指令就需要包含操作数的地址了,也就是说,指令必须明确的包含操作数的地址,这不像栈可以用栈指针去操作。比如如下的加法操作:
正如前面所说,基于寄存器的VM没有入栈和出栈的操作。所以加法指令只需要一行就够了,但是不像Stack-Based一样,我们需要明确的制定操作数R1、R2、R3(这些都是寄存器)的地址。这种设计的有点就是去掉了入栈和出栈的操作,并且指令在寄存器虚拟机执行得更快。
四、面试回答
个人感觉回答这个问题首先得了解清楚基于寄存器与基于栈的虚拟机有什么区别,然后ART优势在哪里,为什么ART会比较快。
阅读全文
0 0
- android面试-ART与Dalvik
- Android ART运行时与Dalvik虚拟机
- android Dalvik与art虚拟机区别
- Dalvik与ART
- dalvik 与art 区别
- Dalvik 与 ART
- Dalvik 与 ART 区别
- Android Dalvik ART
- android Dalvik JVM ART
- Android JVM&Dalvik&ART
- 安卓ART与dalvik
- Dalvik与ART的区别:
- Dalvik与ART的区别
- Dalvik与ART的区别
- Android 5.0:ART 取代 Dalvik ?
- Android的ART和Dalvik
- Android 中的Dalvik和ART
- Android 中的Dalvik和ART
- PullToRefreshScrollView之自己创建ListVView
- freeRTOS API简记
- uiautomator测试判断结果后保存入指定文件夹路径中
- Could not obtain transaction-synchronized Session for current thread
- 【App Store审核】因PLA1.2被拒的个人经历和解决方法
- android面试-ART与Dalvik
- c++ 素数检测算法归纳
- Nginx服务器的反向代理proxy_pass配置方法讲解
- activemq 包冲突
- express 做html模板
- 对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
- springSecurity源码剖析(2)-页面过滤器
- 执行maven update project ,报Preference node "org.eclipse.wst.validation"
- Mac安装Opencv3 --with-all