모바일 앱 성능 분석 방법에 대해서 설명을 드립니다
- 기존 서버 APM과 모바일에서의 성능 기준의 차이
- 모바일 제약사항및 아키텍처
- 안드로이드는 어떻게 발전해 왔나
- Vectorization
- Loop
- Redex / Optimized Layout
- Garbage Collector
- 제조사가 보장해야 되는 성능
- 개발사가 고민해야 되는 영역
- 실사례 설명
- 갤럭시노트 2의 점유율
- Xiaomi 폰의 국내 4위 시장 점유율
- 여러가지 모바일 성능 리포트
8. () ()# 0 1 .
기본 제약들 서버 모바일
상시 전원 공급 ● X
CPU / GPU 쿨러 (발열 방지) ● X
앱이 돌아가는 환경 단일 OS/ 디바이스 파편화
OS 버전 업데이트 (주체) 개발/운영사가 제어 플랫폼 회사 / 소비자 제어
배포 주도권 / 반영 시간 개발 ,운영사 / 즉시 소비자 / 2~7일 (안할수도 있음)
12. ) ) (
(
Governor (거버너) 상세 설명
) /
q f U t
D v cU m
) / sn ) /mX ( ) d wOf a m i F
C ) / r f Ip
( . ) / P f f v cU e
. U v c t F
U r v c t F .
. d U F U o t v c Ip
출처: http://dreamlog.tistory.com/4 [꿈꾸는 사람.]
13. n
./ -./ -: : o a et
./ Cbp U
G ct g d rrv
i hja s e ua
2 5 5: : o iP
>> * 085 >0 5 > 1 : 0 : ./ 0 -./ 5: :
30. 어디까지 클라우드 도움없이
모바일에서 AI 연산을 할 수 있을까?
샤오미가 적용한 시나리오
AI Camera
Single Lens Bokeh
Image
Super Resolution
Scene Recognition
Voice
Image
Style Transfer
Translation
32. 화면 인식
Environment Landscape Plants Human/Objects
25 labels, recognition of
up to 206 scenes
sunny overcast cloudy
night snow candlelight
grass tree succulent
flower autumn
scene
maple
leaf
sunrise/sunset waterside
city building
cardog foodcat
portrait/ backlight/ silhouettePPTfile
69. C L G R
.<; - ;
.<;
C L G R .<; - ; M
= ; > = ;( = ;
) ; ; S .>
70. C ea ( k f R
C C = C C 1; C C
1C< =3 C ; C, ; C)
; C G =3 C ; C, > ; C )
c
.- g C e S L C=mk M
3 C 2 Q l PM
G mQ h i 2 fQ lW i nR
71. R e b hM
, 2 2 2 2
. S G 2 2 2 2 2 2m O S M
, 2 2 2 2 a Q r c d u m WM
j P a Q c , u C n , u C hM
2. 2 2 2 2
2 2 2 2 2 2m O M
2. 2 2 2 2 , 2 2 2 2b R k o G M
a t d u g . 21 2 S fWM
, ,
2.
.
.
2 2 2 2 2 2
77. 변경한 이유.. (Google Map 사
례)
Object Life Time (1세대에서 대부분 걸러짐)
살아남는 %
GC 실행횟수
78. 추가적인 기교들을 더함.
• ( k , yc s
• -. c w T R c u
• CP i R yc vm
• tD vA ri e s Avm
• py ) T M k e l Gi aw ) .
O c M m
79. Android L부터 GC 전략 추가
• CMS (기본전략)
• Mark-Sweep 전략을 유지하되 성능을 향상 시키는 방법
• Mark-Sweep 의 느린 속도를 해결하기 위해 병렬, 부분, 이전 세대에만 생성된 것을 제
거하는 방식 등이 종합적으로 적용함.
• SS : Semi Space (aka From Space To Space)
• 빠른 GC 방법 / 단 메모리는 많이 사용하는 방법 -> 단 첫 GC의 정확도는 Mark-Sweep
보다 낮은 문제가 있음.
• 2개의 Semi Space 를 만들어서 정리하는 방법
• GSS : Generation Semi Space
• Semi Space를 세대별로 하는 방법.
89. Background gctype 은 언제든지 변경
(기본 gc 설정은 제조사 마음)
• To disable background compaction do:
• adb shell setprop dalvik.vm.backgroundgctype CMS
• To enable:
• adb shell setprop dalvik.vm.backgroundgctype SS
90. MemFree vs MemoryAvailable.
cat /proc/meminfoOS 메모리 정보는
MemFree보다
MemAvailable을 이용하세요.
MemFree:
The amount of physical RAM, in kilobytes,
left unused by the system.
MemAvailable:
An estimate of how much memory is available
for starting new application
95. 30 I
. . + 03 C
+ + . + . A H
https://developer.android.com/guide/topics/graphics/hardware-accel.html
http://blog.danlew.net/2015/10/20/using-hardware-layers-to-improve-animation-performance/
112. 설명 – 화면이 뜨고 나서 시간 순서대로 스택정보 나열
14ms : 화면이 뜰때 초기하는 작업들이 너무 많음
236ms : 현 순간에도 화면 레이아웃을 구성하고 있는 중
1397ms : 화면의 프레임이 다 그려지지 않아 UI Thread에서 대기 하는 상황
113. 문제 상황
A사 SDK HealthData에서 데이터를 받아오느라 화면 전체(UI Thread) 가 멈추는 상황이 발생함.
항상 로컬에 이전 데이터를 저장해서 먼저 보여주고, 사용자가 클릭시 정보를 가져오는 것으로 하는 것이 좋음
즉 인터넷이 연결되지 않아도 이전 데이터를 볼수 있도록 먼저 가이드라인을 잡기를 권고함.
114. 고려 상황
화면 점유시간 3초 이상
화면을 다시 그리는 (Resume) 하는 상황에서, 화면 단에서 FileIO가 발생함
리소스 폰트를 가져오는 상황에서 지연이 발생되는 것으로 판단됨.