[개념] 달빅과 ART(JIT 컴파일러와 AOT컴파일러)

2016. 5. 16. 22:29·프레임워크/Android

[컴파일러]

고급언어로 쓰여진 프로그램이 컴퓨터에서 실행되기 위해서는 

컴퓨터가 직접 이해할 수 있는 언어로 바꾸어 주어야 한다. 

이런 역활을 하는 프로그램이 컴파일러 이다. 


고급언어는 인간이 이해할 수 있는 표현으로 사용할 수 있는 언어이고, 

저급언어는 컴퓨터가 이해할 수 있는 표현으로 사용하는 언어이다. 


컴파일러는 소스코드를 컴파일하여 목적코드(Object Code)를 생성하고,

목적코드는 링커가 라이브러리와 연결하여 실행가능한 코드를 생성하여 실행한다. 


* 자바 컴파일러와 JIT 컴파일러는 다른 것이다. 자바 컴파일러는 .java 파일을 해석해서 .class파일(자바 바이트 코드)로 변환한다. JIT 컴파일러는 .class파일을 해석해서 기계어로 번역하여 JVM이 실행할 수 있는 형태로 번역한다.



[ART vs 달빅 = AOT 컴파일러 vs JIT 컴파일러]

안드로이드에서 컴파일러에는 달빅, ART가 있다. 

ART는 안드로이드 5.0에서 정식으로 채택되었다. 


이 둘의 차이는 컴파일 방식에 있다. 

달빅은 JIT 컴파일러이고, ART는 AOT 컴파일러 이다. 

JIT는 실행시점에 소소코드를 번역한다. 설치는 빠르지만 실행시점에 느리게 된다.

번역한 정보를 메모리에 올려야 하기 때문에 메모리를 많이 먹는다. 


AOT는 설치시점에 소스코드를 번역한다. 설치가 느리고, 번역을 해서 따로 파일을 저장하기 때문에 용량을 많이 먹게 된다. 

하지만 실행시점에 미리 번역한 파일을 실행하므로 빠르게 실행이 가능하다. 


즉, JIT는 실행 디바이스에서 매번 번역해야 하므로 느리고, AOT는 미리 번역해서 저장해 두기 때문에 빠르다.



* 구글 I/O 2016의 발표에 따른 추가 사항

안드로이드 N에서는 ART 에 JIT 컴파일러도 추가 된다고 합니다.


프로필 가이드 방식의 JIT/AOT 컴파일


Android N에서 코드 프로파일링을 포함한 JIT(Just in Time) 컴파일러를 ART에 추가했으며, 실행 시에 Android 앱의 성능이 계속해서 향상됩니다. JIT 컴파일러는 ART의 현재 AOT(Ahead of Time) 컴파일러를 보완하고 런타임 성능을 개선하며, 저장 공간을 절약하고, 앱 업데이트 및 시스템 업데이트 속도를 빠르게 해줍니다.

프로필 가이드 방식의 컴파일을 통해 ART는 실제 사용량과 기기의 조건에 따라 각 앱의 AOT/JIT 컴파일을 관리할 수 있습니다. 예를 들어, ART는 최적의 성능을 위해 각 앱의 핫 메서드에 대한 프로필을 유지관리하고 이들 메서드를 프리컴파일하고 캐싱할 수 있습니다. 이 경우 앱의 다른 부분들은 실제로 사용될 때까지 컴파일하지 않고 남겨둡니다.

프로필 가이드 방식의 컴파일은 앱의 주요 부분들에서 성능을 개선할 뿐만 아니라 관련 바이너리를 비롯한 앱 전체의 RAM 공간을 줄이는 데 도움이 됩니다. 이 기능은 저용량 메모리 기기에 특히 중요합니다.

ART는 기기 배터리에 미치는 영향이 최소화되는 방식으로 프로필 가이드 방식의 컴파일을 관리합니다. ART는 기기가 유휴 상태이고 충전 중일 때만 프리컴파일을 수행하며, 해당 작업을 미리 수행하여 시간과 배터리를 절약합니다



http://android-developers.blogspot.kr/2016/05/whats-new-in-android-n-release-virtual-reality-android-studio.html

https://developer.android.com/preview/api-overview.html#jit_aot


반응형
저작자표시 비영리 (새창열림)

'프레임워크 > Android' 카테고리의 다른 글

[android/layout] fill_parent, match_parent, wrap_content의 차이  (0) 2016.04.11
'프레임워크/Android' 카테고리의 다른 글
  • [android/layout] fill_parent, match_parent, wrap_content의 차이
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    Linux
    airflow
    k8s
    oozie
    bash
    mysql
    Hadoop
    error
    HIVE
    하둡
    알고리즘
    HDFS
    emr
    Tez
    오류
    백준
    하이브
    SPARK
    파이썬
    ubuntu
    AWS
    다이나믹
    정올
    S3
    yarn
    build
    hbase
    java
    nodejs
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[개념] 달빅과 ART(JIT 컴파일러와 AOT컴파일러)
상단으로

티스토리툴바