Register-based VS stack-based machine
Dalvik VM(virtual machine) 은 register-based
Java VM 은 stack-based machine
stack based machine 은 stack 을 이용해서 instruction 이 stack 을 이용해서 data 를 다루기 때문에
register 를 이용해서 data 를 다루는 instruction 을 가진 Dalvik 보다 많은 instruction 을 사용 해야 한다.
push r0
push r1
sub
pop r2
반면에 register-based 에서는 data의 destination register 에 대한 정보도 가지고 있어야 한다. 그래서 이 부분에 있어서는 stack-based 보다 code가 커진다.
sub r0, r1, r2
안드로이드에서 dex 가 만들어지는 과정
java -> compiled -> bytecode -> SDK toolset(.class -> .dex)
Android v2.3(GingerBread) 에서는 just-in-time compilation 을 지원한다.
http://www.iamroot.org/xe/32799 의 댓글 '선경문'
JIT 는 runtime 에 시스템의 정보를 알수 있어서 해당 머신에서 지원하는 SIMD 등의 특별한 명령어를 적극 활용할 수 있다고 한다.
JIT이기 때문에 고려해야 하는 최대 이슈는 '어떤 코드를 얼마만큼 컴파일 할 것인가?' 입니다.
http://www.iamroot.org/xe/32799 의 댓글 선경문
인터프리터에서 코드를 수행할 때 성능의 이슈는 명령어 디시패칭(Dispatching) 이 크다고 한다.
댓글 없음:
댓글 쓰기