더 빨라진 Android n

Preview:

Citation preview

더 빨라진 Android N

GDE AndroidTossLab Android Developer블로그 : https://medium.com/@jsuch2362

더 빨라진 Android N

앱 실행/동작이 더 빨라짐

시스템 업데이트가 더 빨라짐

왜?어떻게?

AOT JIT

AOT 에 JIT 를 더하다

여기서 잠깐AOT?JIT?

AOT? JIT?

JIT : 안드로이드 프로요 부터 추가 됨 - Just In Time Compiling - Class 파일을 실행 시점에 해당 시스템에 적합하게 변환

AOT : 안드로이드 L 부터 추가 (L 에서는 expremental) - Ahead Of Time Compiling - 설치 되는 시점에 시스템에 적합하게 변환

앱 실행AOT >>> JIT

Nougat 은 왜 JIT 로 돌아왔나?

AOT 와 JIT 비교

AOT 의 약점

OS 업데이트 전략 변경

- 2015 년 부터 Secure 패치로 분기에 2~3회 가량 OS 업데이트- AOT 환경은 모든 Application 의 업데이트 요구

설치 시간, 공간 점유, 배터리에 취약

JIT 는 약점이 없나?

앱 동작이 느리다.

설치를 위해 동작을 포기한다??

Nougat 은 어떻게 더 빨라졌나?

Welcome back, JIT

실제론 더 빨라졌다.

- 앱 실행 - M 대비 3배 더 빨라짐- JIT Compiling 을 Background 로 전환- 자주 쓰는 기능(Hot Method) 에 대해서만 Compiling - GC 대상에 대한 캐시

앱 첫 실행시

첫 실행은 JIT 기반

사용자의 앱 사용을 Profiling

Profiling 기반으로 컴파일

다음 실행에 컴파일된 정보로 앱 실행

최적화 후 실행

컴파일된 앱은 AOT + JIT 혼합 상태

사용자의 앱 사용을 Profiling

Profiling 기반으로 컴파일

컴파일 결과물로 앱 실행

계속적으로 반복

여전히 의문

동작은 빨라졌으나최초 실행은 여전히 “?”

JIT Compilation 의 변화

기존 JIT

APK 압축 해제 시간

JIT Compilation

Nougat 의 JIT

APK 는 설치 시점에 압축 해제최초 실행에 관련된 class 먼저 loading 후 전달. 나머진 Background 에서 처리

JIT vs AOT vs JIT+AOT

AOT 만큼은 아니나 JIT + AOT 는 근접한 성능을 보임

JIT Compilation 의 Background 이점

UI Thread 동작에 더 많은 여유를 줌으로써 사용감을 더 좋게 함Android M 과 N -> 4% 프레임 드랍기존 JIT -> 20% 프레임 드랍

Profiling Guided Compilation 으로 인해 JIT 이 비해CPU 사용율이 낮아짐

배터리 가용성 증가

Profiling Guided Compilation

프로파일 대상

Hot Method

Impact Startup

Share Library

자주 실행하는 메소드

실행과 관련된 클래스

외부에서 요청에 의한 동작

AOT 컴파일 데몬 로직

Profile Guided Compilation 의 이점

최적화 되지 않은 부분만 최적화

- JIT 에 의해 소모 되는 부분 최소화- 배터리 절약

최소한으로만 AOT 코드 생성

- 저장공간 절약

설치 공간 점유 비교

Android M 대비 50% 절약

Application Image

Application Image 생성

초기 실행에 관련된 부분을 이미지로 저장

Application Image 동작

앱이 실행 되면 이미지를 불러와 메모리에 추가

Profile + Image 는 5~10% 더 빠름

GC 의 동작 개선Object Allocation 동작 개선

정리

Nougat 의 변화

빨라진 컴파일러와 인터프리터

JIT 컴파일러 추가

Profile Guided 컴파일

Application Image

더 빨라진 Object Allocation

One more Thing

Q & A

앱이 업데이트 되면 Optimized Code 는?

- 삭제 됨. 설치되면 Empty Profile 상태- 빈번한 업데이트에는 영향이 간다. 고려해야 한다.

Hot Method 기준은?

- Key Matrix 가 존재하며 AOSP 코드를 봐달라

Recommended