SlideShare a Scribd company logo
High Performance
Android App. Development
양정수 (Jeongsoo Yang)
yangjeongsoo at gmail.com
www.kandroid.org
CONTENT
1. The History of Android Performance Features
2. Performance Comparison
of the Three Programming Models
3. Case Study :
Performance Features of the Google Chrome Browser
4. Questionnaire :
Multi-Core vs. GPU,
Android vs. Chrome,
and Beyond Android
Let’s go back to last summer.
“Why will Android always lag behind iOS?”
If you are a manufacturer,
how would you solve this problem?
What was OOOOOOO’s Approach?
1. The Optimization of SoC, Android Platform,
and Built-in Apps
2. Belief that this was Apple’s approach to
success
The history of Android Performance Features
• Android alpha (at least two internal releases)

• Android beta (5 Nov. 2007) – SDK : Java VM vs. Dalvik VM
• Android first commercial release (23 Sep. 2008)
• AOSP (21 Oct. 2008) – Zygote : Preload & Prelink (ASLR)

• Cupcake (27 Apr. 2009) – NDK & Stable native API
• Froyo (20 May 2010) – JIT (Just-in-time compilation)
• Jingerbread (6 Dec. 2010) – StrictMode & NativeActivity
• Honeycomb (22 Feb. 2011) – GPUI, SMP, and RenderScript
• JellyBean (27 Jun. 2012) - Project Butter (Jank Buster)
Fast & Smooth - Jelly Bean and Project Butter

Source : http://www.youtube.com/watch?v=V5E5revikUU
Facebook Android Development :
A Scrolling Performance Story - Dec 5, 2012
Their Android Performance Challenges
•
•
•
•
•
•
•

Why Android stutter more?
Measure Improvement
Garbage Collection
Memory
View Optimization
Main Thread
User Perception

Source : http://velocity.oreilly.com.cn/2012/ppts/Facebook-Android-Performance-OReilly-Velocity-Beijing-Dec-2012.pdf
The World of List View
Tuesday, June 1, 2010, Google I/O
FPS
60
50
40
30
20
10
0

Dumb

Recycling views

ViewHolder

Source : https://dl.google.com/googleio/2010/android-world-of-listview-android.pdf
Memory and Performance
March 29, 2013, 11th Kandroid Conference
Event

(AdapterView)
Invalidate

Measurement

A

Adapter

• getView()

Async
Drawable

Bitmap
Decoding

Storage

Network
I/O

B

• If an AdapterView has many children,

Dumb

part A is as important as part B.
Layout

Draw

Recycle

View
Holder

• If the AdapterView has few children,
part B becomes a bottleneck.
• Bitmap decoding is responsible.

Source : http://www.kandroid.org/board/data/board/conference/file_in_body/1/511th_kandroidconf_memory_and_performance.pdf
What lessons can we learn from history?
1. Always Measure
• Before beginning optimization, ensure the
problem requires solving.

2. Terminology used for Android Performance Features
• Bitmap Allocation
• Layer, DisplayList, DisplayList Property
• Input Latency
• FPS, VSync
CONTENT
1. The History of Android Performance Features
2. Performance Comparison
of the Three Programming Models
3. Case Study :
Performance Features of the Google Chrome Browser
4. Questionnaire :
Multi-Core vs. GPU,
Android vs. Chrome,
and Beyond Android
Comparison and Analysis of
the Three Programming Models
in Google Android (2012, Intel)
• What are the Three Programming Models ?

• Working Flow Comparison
• Execution Model Comparison

• Performance Difference and Analysis
• Differences in Development and Deployment
• Conclusion & Unified Programming Model
Source : http://people.apache.org/~xli/papers/applc2012-android-programming-models.pdf
What are the Three Programming Models?
2008

2009

M

AOSP
Branch
SDK
(API Level)
NDK
(Revision)

RenderScript
android.support.
v8.renderscript

1

2010

C

D E F

23

45 6 7 8

1 2

34

2011

GH

2012

I

9 10 13 1415

5

6 7

2014

2013

J

16

8

17

18

9
Experiment setup : Balls
SDK : Workflow & Execution Model
Android Runtime

Android SDK
JDK

Input
Source
Program

Java
Compiler

Bytecode
(class File)

dx utility

Bytecode
(dex File)

Dalvik VM
Output

public static long
sumArray(int[] arr) {
long sum = 0;
For (int i : arr)
{
sum += i;
}
return sum;
}

000b:
000d:
000f:
0012:
0013:
0015:
0016:
0018:
0019:
001b:
001c:
001d:
001e:
0021:

iload 05
iload 04
if_icmpge 0024
aload_3
iload 05
iaload
istore 06
lload_1
iload 06
i2l
ladd
lstore_1
iinc 05, #+01
goto 000b

0007:
0009:
000b:
000c:
000d:

if-ge v0, v2, 0010
aget v1, v8, v0
int-to-long v5, v1
add-long/2addr v3, v5
add-int/lit8
v0, v0, #int 1
000f: goto 0007
SDK : Workflow & Execution Model
TLS

Activity
Thread

Queue

Thread Pool

H
handleMessage()

Looper

execute()
ViewRootImpl
handleMessage()

Message
Queue

• onPreExecute()
• onProgressUpdate()
• onPostExecute

• doInBackground()

AsyncTask
NDK : Workflow & Execution Model
A PPLICATIONS

A PPLICATIONS
HelloAndroid

ActivityThread

Receiver

H

Looper

Handle
Message()

ViewRoot

RUNTIME

JNI

Surface
Manager
FreeType
SSL

Libc

Dalvik Virtual
Machine

Media
Framework

SGL

L INUX K ERNEL

Handle
Message()

L IBRARIES

RUNTIME

Core Libraries

Custom
Library

OpenGL|ES

ViewRoot

Message
Queue

View

L IBRARIES

Handle
Message()

Custom
구현

Activity

Handle
Message()

H

Looper

Service
Provider

Message
Queue

ActivityThread

SQLite

WebKit

NativeActivity

Custom
Library

Core Libraries

Surface
Manager

JNI

OpenGL|ES

FreeType

SGL

SSL

Libc

Dalvik Virtual
Machine

Media
Framework

L INUX K ERNEL

SQLite

WebKit
RenderScript : Workflow & Execution Model
App Java
Sources

App Java
Sources

Reflected
Layer
(C99)
helloworld.rs

Native Layer
(RenderScript)

llvmrs-cc

ScriptC_
helloworld
.java

ScriptField_
xxxxxxxxx
.java

helloworld.bc

Native Layer
(LLVM Code)
RenderScript : Workflow & Execution Model
Framework
Layer
App Java
App Java
App Java
Sources
Sources
Sources

Dalvik
JIT
Compiler

Multicore CPUs

Reflected
Layer
ScriptC_
helloworld
.java

GPUs/DSPs
libbcc

helloworld.bc

Native Layer
(LLVM Code)
APK file

LLVM based
Jit compiler

System lib.
.bc files
Performance Analysis : Multiple Worker Thread
70

60

50
SDK
40
SDK-MT
30

NDK
NDK-MT

20

10

0
200

300

400

500

600

700

800

900

Source : http://people.apache.org/~xli/papers/applc2012-android-programming-models.pdf

1000
Performance Analysis : Runtime design diff.
70

60

50

40

SDK-MT
NDK-MT

30

Renderscript

20

10

0
200

300

400

500

600

700

800

900

1000

Source : http://people.apache.org/~xli/papers/applc2012-android-programming-models.pdf
Current Issues & Unified Programming Model
2
Class

Programmability

Sub Class

SDK

NDK + RS

X

X

X

3

Library
Extensibility

O

Strong Typing
and Verification

O

X

O

O

Portability

Security

RS

O

Memory
Management

NDK

△

O

O

3
X

X

X

Vector Type

X

△

O

O

Thread Pool

O

△

O

O

OpenGLES

Performance

O

O

O

X

O

1

1. Is it possible to support vector type without changing the JNI implementation?
2. Why did Google make RS separate from NDK?
3. Are Memory Management and Strong Typing critical issues?
Current Issues & Unified Programming Model
GDK : What is GDK?

Hooray! We done the GDK building system.
This building system is independent on NDK.
It builds what is should (bitcodes), and then transfer the control
to NDK building system, doing the remaining building.
This code is still ugly. Need cleanup.
gdk git commit id : edde771d8940a6f1b00fd68bcca1486b575e6d9e
Author : Nowar Gu <nowar100@gmail.com>
GDK : hello-llvm Sample Code

Android-portable.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello_llvm
LOCAL_CFLAGS := -D NUM=7788
LOCAL_SRC_FILES := hello_llvm.c test.cpp
LOCAL_C_INCLUDES := jni/test-include
include $(BUILD_BITCODE)
include $(CLEAR_VARS)
LOCAL_MODULE := test2
LOCAL_SRC_FILES := test2.c
include $(BUILD_BITCODE)

Build Command
$ cd ~/android-4.1.1_r1/gdk/samples/hello-llvm/jni
$ export OUT=~/android-4.1.1_r1/out/target/product/generic
$ ../../../gdk-build --ndk-root=~/android-ndk-r8b
$ ../../../gdk-build --ndk-root=/home/jsyang/android-ndk-r8b
Compile Bitcode : hello_llvm <= hello_llvm.c
Compile++ Bitcode: hello_llvm <= test.cpp
BitcodeLibrary : libhello_llvm.bc
Install BCLib : libhello_llvm.bc => res/raw/libhello_llvm.bc

Compile Bitcode : test2 <= test2.c

BitcodeLibrary : libtest2.bc
Install BCLib : libtest2.bc => res/raw/libtest2.bc
Gdbserver
Gdbsetup
Gdbserver
Gdbsetup

: [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
: libs/armeabi/gdb.setup
: [arm-linux-androideabi-4.6] libs/armeabi-v7a/gdbserver
: libs/armeabi-v7a/gdb.setup

Compile thumb : hello_llvm <= hello_llvm.c
Compile++ thumb : hello_llvm <= test.cpp
StaticLibrary : libstdc++.a
SharedLibrary : libhello_llvm.so
Install
: libhello_llvm.so => libs/armeabi/libhello_llvm.so
Compile thumb : hello_llvm <= hello_llvm.c
Compile++ thumb : hello_llvm <= test.cpp
StaticLibrary : libstdc++.a

SharedLibrary : libhello_llvm.so
Install
: libhello_llvm.so
=> libs/armeabi-v7a/libhello_llvm.so
Google I/O 2013 : Game Development Env.

An Introduction to
Play Game Services

Game Services
In Practice
CONTENT
1. The History of Android Performance Features
2. Performance Comparison
of the Three Programming Models
3. Case Study :
Performance Features of the Google Chrome Browser
4. Questionnaire :
Multi-Core vs. GPU,
Android vs. Chrome,
and Beyond Android
Google I/O 2012 Keynote

Android vs. Chrome
Google I/O 2013 Keynote
Sundar Pichai (SVP, Android, Chrome & Apps)
Performance Features
of the Google Chrome Browser
• Why did Google Develop Chrome?
• Chrome’s Multi-process Architecture on Android
• Chrome’s Hardware Acceleration on Android
• Chrome’s Networking on Android
• Improved VSync scheduling for Chrome on Android
Why did Google Develop Chrome?
Chromium

Chrome browser :
uses multiple processes !

Chromium

safer

Sandbox the web app’s process

faster

Separate threads for separate web apps

blink
v8
more stable
Chromium OS

Fast rendering engine, small footprint
Out-of-Process iframes

Optimized JS engine,
many opportunities

Separate address spaces
for separate web apps
Chrome’s Multi-process Architecture on Android

Source : https://sites.google.com/a/chromium.org/dev/developers/design-documents/multi-process-architecture
Chrome’s Multi-process Architecture on Android
Browser Process
Main
Thread
(UI)

I/O
Thread

Render Process

IPC

Main
Thread

Render
Thread

android:process=":sandboxed_process0" android:isolatedProcess="true“
android:process=":privileged_process2" android:isolatedProcess="false"
android:isolatedProcess
If set to true, this service will run under a special process that is isolated from the rest of
the system and has no permissions of its own. The only communication with it is
through the Service API (binding and starting).
Chrome’s Hardware Acceleration on Android
Software Rendering Architecture

Render Process

Shared
Memory

HWND

Bitmap

WebKit / Skia
Brower Process
IPC

Source : http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome
Chrome’s Hardware Acceleration on Android
Compositing with the GPU process

Browser
Process
HWND

Shared
Memory
Render Process

Commands

GPU Process
(server)

WebKit / Skia

Bitmaps
& Arrays

Compositor
Context

Compositor

GL/D3D
IPC

Source : http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome
Chrome’s Hardware Acceleration on Android
Compositing with the GPU process
Chrome’s Hardware Acceleration on Android
Compositing with the GPU Thread
USER
u0_a94
u0_a94
u0_a94
u0_a94
u0_a94
u0_a94
u0_a94
u0_a94
u0_a94
u0_a94
u0_a94
...
u0_a94
...
u0_i50

PID PPID
24458 125
24462 24458
24463 24458
24464 24458
24465 24458
24466 24458
24467 24458
24468 24458
24469 24458
24470 24458
24472 24458

NAME
org.chromium.content_shll_apk
GC
Signal Catcher
JDWP
Compiler
ReferenceQueueD
FinalizerDaemon
FinalizerWatchd
Binder_1
Binder_2
AsyncTask #1

Browser
Process
GPU Thread
(server)
Compositor
Context

GL/D3D

24486 24458 ntent_shell_apk
24526 125

org.chromium.content_shel_apk:sandboxed_process1
Chrome’s Hardware Acceleration on Android

systrace, chrome://gpu
Improved VSync Scheduling on Android
Improved vsync scheduling for Chrome on
Android - Author: skyostil@
• Motivation
• Improved vsync scheduling
• Vsync notification message
• Triggering vsync based on input
• Case studies
• Conclusion
Source : https://docs.google.com/a/chromium.org/document/d/16822du6DLKDZ1vQVNWI3gDVYoSqCSezgEmWZ0arvkP8/edit
Google I/O 2012 : For Butter or Worse - VSync
VSync

Drawing
without
VSync

0

VSync

1

1

1

2

3

CPU

3

3

Display
GPU

4

2
2

3
4

3

1

1
1

3

2

0

VSync

2

2

1

Drawing
with
VSync

VSync

4
4

Source : http://commondatastorage.googleapis.com/io2012/presentations/live%20to%20website/109.pdf

4

Display
GPU
CPU
Improved VSync Scheduling on Android
Old Architecture

System VSync

Browser
Process

internal
timer’s tick

Render
Process
Improved VSync Scheduling on Android
Old Architecture
~3.2ms
System VSync
internal
timer’s tick

Browser
Process

Render
Process
Improved VSync Scheduling on Android
Old Architecture and Problems

Source : https://docs.google.com/a/chromium.org/document/d/16822du6DLKDZ1vQVNWI3gDVYoSqCSezgEmWZ0arvkP8/edit
Improved VSync Scheduling on Android
New Architecture
~3.2ms
System VSync
internal
timer’s tick

Browser
Process

Render
Process
Improved VSync Scheduling on Android
New Architecture : Improvement and Problem

Source : https://docs.google.com/a/chromium.org/document/d/16822du6DLKDZ1vQVNWI3gDVYoSqCSezgEmWZ0arvkP8/edit
Improved VSync Scheduling on Android
New Architecture : Improvement and Limit

Conclusion
This document describes improvements to vsync scheduling which allows
Chrome on Android to generally respond to scroll gestures within a single
vsync interval. These improvements apply to regular page scrolling, while
lowering the latency of main thread and JavaScript-driven updates are left as
future work.
Source : https://docs.google.com/a/chromium.org/document/d/16822du6DLKDZ1vQVNWI3gDVYoSqCSezgEmWZ0arvkP8/edit
What lessons can we learn from Chrome?
1. On a GUI system, a scheduler for input and drawing
is the most important .
2. If you review Chrome technology in this perspective,
you can find valuable documents.
3. This is one document that is recommended.
https://docs.google.com/document/d/1LUFA8MDpJcDHE0_L2EHvrcwqOMJhzl5dqb0AlBSqHOY/edit
CONTENT
1. The History of Android Performance Features
2. Performance Comparison
of the Three Programming Models
3. Case Study :
Performance Features of the Google Chrome Browser
4. Questionnaire :
Multi-Core vs. GPU,
Android vs. Chrome,
and Beyond Android
Multi-Core vs. GPU
~12GB/s

ISP

70GFLOPs

LPDDR3
GPU

CPU

DSP

~20GFLOPs

Dark Silicon and the End of Multicore Scaling
http://falsedoor.com/doc/ISCA11.pdf

GreenDroid: An Architecture for the Dark Silicon Age
http://darksilicon.org/papers/taylor-aspdac-final-2012.pdf
Android vs. Chrome
We have two options: The first is maintaining the status
quo, the other is merging the two platforms.

Status Quo
• Android : Phone, Tablet, Google TV, Car
• Chromium : Chrome Brower, Chrome OS
Merged State
• Android-centric Merger
• Chrome-centric Merger
• Alternate Merger
Android vs. Chrome
For Android-centric merger to succeed,
we must answer one question:

“Is it possible to build chrome
via Android Infrastructure?”
For Chrome-centric merger to succeed,
we must answer a different question:
“Is it possible to run Android Apps in the Chrome?”
Do you have any alternate courses?
Beyond Android
With the current market saturation, is it possible to create
a new platform?
• B2G, Tizen, LG Web OS, Ubuntu Mobile
The successful development of a new platform could lead
to advances. Nevertheless, it would be just one more in
an already saturated market. So, we must streamline the
market and focus on cross-platform compatibility with
the status quo.
• Web-based (e.g. PhoneGap)
• Native-based (e.g. Cocos2d-x)
• VM-based (e.g. Mono)
CONTENT
1. The History of Android Performance Features

2. Performance Comparison of the Three
3.
4.

Programming Models
Case Study : Performance Features of the Google Chrome Browser
Questionnaire : Multi-Core vs. GPU, Android vs. Chrome, and Beyond Android

지금까지 경청해 주셔서 감사합니다.

질문 있으시면 해 주세요.

More Related Content

What's hot

Using VueJS in front of Drupal 8
Using VueJS in front of Drupal 8Using VueJS in front of Drupal 8
Using VueJS in front of Drupal 8
Brian Ward
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC Framework
Bo-Yi Wu
 
Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7
Azilen Technologies Pvt. Ltd.
 
Workshop 15: Ionic framework
Workshop 15: Ionic frameworkWorkshop 15: Ionic framework
Workshop 15: Ionic framework
Visual Engineering
 
Using Play Framework 2 in production
Using Play Framework 2 in productionUsing Play Framework 2 in production
Using Play Framework 2 in production
Christian Papauschek
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
Antoine Sabot-Durand
 
Modular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJSModular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJS
Gunnar Hillert
 
ngCore
ngCorengCore
Play! Framework for JavaEE Developers
Play! Framework for JavaEE DevelopersPlay! Framework for JavaEE Developers
Play! Framework for JavaEE Developers
Teng Shiu Huang
 
Single Page Applications in Drupal
Single Page Applications in DrupalSingle Page Applications in Drupal
Single Page Applications in Drupal
Chris Tankersley
 
OpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheConOpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheCon
os890
 
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
NAVER D2
 
Introduction to Play Framework
Introduction to Play FrameworkIntroduction to Play Framework
Introduction to Play Framework
Warren Zhou
 
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Max Andersen
 
Introduction to Grunt.js on Taiwan JavaScript Conference
Introduction to Grunt.js on Taiwan JavaScript ConferenceIntroduction to Grunt.js on Taiwan JavaScript Conference
Introduction to Grunt.js on Taiwan JavaScript Conference
Bo-Yi Wu
 
Seven Versions of One Web Application
Seven Versions of One Web ApplicationSeven Versions of One Web Application
Seven Versions of One Web Application
Yakov Fain
 
HTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityHTML5 Real-Time and Connectivity
HTML5 Real-Time and Connectivity
Peter Lubbers
 
Bootify your spring application
Bootify your spring applicationBootify your spring application
Bootify your spring application
Jimmy Lu
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
Ryan Cuprak
 
Managing JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSManaging JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJS
Den Odell
 

What's hot (20)

Using VueJS in front of Drupal 8
Using VueJS in front of Drupal 8Using VueJS in front of Drupal 8
Using VueJS in front of Drupal 8
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC Framework
 
Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7
 
Workshop 15: Ionic framework
Workshop 15: Ionic frameworkWorkshop 15: Ionic framework
Workshop 15: Ionic framework
 
Using Play Framework 2 in production
Using Play Framework 2 in productionUsing Play Framework 2 in production
Using Play Framework 2 in production
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
 
Modular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJSModular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJS
 
ngCore
ngCorengCore
ngCore
 
Play! Framework for JavaEE Developers
Play! Framework for JavaEE DevelopersPlay! Framework for JavaEE Developers
Play! Framework for JavaEE Developers
 
Single Page Applications in Drupal
Single Page Applications in DrupalSingle Page Applications in Drupal
Single Page Applications in Drupal
 
OpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheConOpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheCon
 
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
 
Introduction to Play Framework
Introduction to Play FrameworkIntroduction to Play Framework
Introduction to Play Framework
 
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
 
Introduction to Grunt.js on Taiwan JavaScript Conference
Introduction to Grunt.js on Taiwan JavaScript ConferenceIntroduction to Grunt.js on Taiwan JavaScript Conference
Introduction to Grunt.js on Taiwan JavaScript Conference
 
Seven Versions of One Web Application
Seven Versions of One Web ApplicationSeven Versions of One Web Application
Seven Versions of One Web Application
 
HTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityHTML5 Real-Time and Connectivity
HTML5 Real-Time and Connectivity
 
Bootify your spring application
Bootify your spring applicationBootify your spring application
Bootify your spring application
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Managing JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSManaging JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJS
 

Viewers also liked

The Road to 60 FPS
The Road to 60 FPSThe Road to 60 FPS
The Road to 60 FPS
Jason Sendros
 
LCE13: Android Graphics Upstreaming
LCE13: Android Graphics UpstreamingLCE13: Android Graphics Upstreaming
LCE13: Android Graphics Upstreaming
Linaro
 
Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)
Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)
Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)
Egor Elizarov
 
Android internals 07 - Android graphics (rev_1.1)
Android internals 07 - Android graphics (rev_1.1)Android internals 07 - Android graphics (rev_1.1)
Android internals 07 - Android graphics (rev_1.1)
Egor Elizarov
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
Chris Simmonds
 
BKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateBKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack Update
Linaro
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Bin Chen
 
Design and Concepts of Android Graphics
Design and Concepts of Android GraphicsDesign and Concepts of Android Graphics
Design and Concepts of Android Graphics
National Cheng Kung University
 

Viewers also liked (8)

The Road to 60 FPS
The Road to 60 FPSThe Road to 60 FPS
The Road to 60 FPS
 
LCE13: Android Graphics Upstreaming
LCE13: Android Graphics UpstreamingLCE13: Android Graphics Upstreaming
LCE13: Android Graphics Upstreaming
 
Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)
Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)
Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)
 
Android internals 07 - Android graphics (rev_1.1)
Android internals 07 - Android graphics (rev_1.1)Android internals 07 - Android graphics (rev_1.1)
Android internals 07 - Android graphics (rev_1.1)
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
 
BKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateBKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack Update
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
Design and Concepts of Android Graphics
Design and Concepts of Android GraphicsDesign and Concepts of Android Graphics
Design and Concepts of Android Graphics
 

Similar to Kandroid for nhn_deview_20131013_v5_final

Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
National Cheng Kung University
 
Android 101 - Introduction to Android Development
Android 101 - Introduction to Android DevelopmentAndroid 101 - Introduction to Android Development
Android 101 - Introduction to Android Development
Andy Scherzinger
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011
pundiramit
 
Introduction to Android- A session by Sagar Das
Introduction to Android-  A session by Sagar DasIntroduction to Android-  A session by Sagar Das
Introduction to Android- A session by Sagar Das
dscfetju
 
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
UA Mobile
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
James Williams
 
Core Android
Core AndroidCore Android
Core Android
Dominik Helleberg
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Android
natdefreitas
 
How to Build & Use OpenCL on OpenCV & Android NDK
How to Build & Use OpenCL on OpenCV & Android NDKHow to Build & Use OpenCL on OpenCV & Android NDK
Post mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EUPost mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EU
Michael Dawson
 
Improve Android System Component Performance
Improve Android System Component PerformanceImprove Android System Component Performance
Improve Android System Component Performance
National Cheng Kung University
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
gillygize
 
Introduction to Cloud Computing with Google Cloud
Introduction to Cloud Computing with Google CloudIntroduction to Cloud Computing with Google Cloud
Introduction to Cloud Computing with Google Cloud
wesley chun
 
What's new in android jakarta gdg (2015-08-26)
What's new in android   jakarta gdg (2015-08-26)What's new in android   jakarta gdg (2015-08-26)
What's new in android jakarta gdg (2015-08-26)
Google
 
Ignacy Kowalczyk
Ignacy KowalczykIgnacy Kowalczyk
Ignacy Kowalczyk
CodeFest
 
Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone
National Cheng Kung University
 
Angular Extreme Performance - V2
Angular Extreme Performance - V2Angular Extreme Performance - V2
Angular Extreme Performance - V2
Gustavo Costa
 
Slides bootcamp21
Slides bootcamp21Slides bootcamp21
Slides bootcamp21
dxsaki
 
Android session-1-sajib
Android session-1-sajibAndroid session-1-sajib
Android session-1-sajib
Hussain Behestee
 
Node in Production at Aviary
Node in Production at AviaryNode in Production at Aviary
Node in Production at Aviary
Aviary
 

Similar to Kandroid for nhn_deview_20131013_v5_final (20)

Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 
Android 101 - Introduction to Android Development
Android 101 - Introduction to Android DevelopmentAndroid 101 - Introduction to Android Development
Android 101 - Introduction to Android Development
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011
 
Introduction to Android- A session by Sagar Das
Introduction to Android-  A session by Sagar DasIntroduction to Android-  A session by Sagar Das
Introduction to Android- A session by Sagar Das
 
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 
Core Android
Core AndroidCore Android
Core Android
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Android
 
How to Build & Use OpenCL on OpenCV & Android NDK
How to Build & Use OpenCL on OpenCV & Android NDKHow to Build & Use OpenCL on OpenCV & Android NDK
How to Build & Use OpenCL on OpenCV & Android NDK
 
Post mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EUPost mortem talk - Node Interactive EU
Post mortem talk - Node Interactive EU
 
Improve Android System Component Performance
Improve Android System Component PerformanceImprove Android System Component Performance
Improve Android System Component Performance
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
 
Introduction to Cloud Computing with Google Cloud
Introduction to Cloud Computing with Google CloudIntroduction to Cloud Computing with Google Cloud
Introduction to Cloud Computing with Google Cloud
 
What's new in android jakarta gdg (2015-08-26)
What's new in android   jakarta gdg (2015-08-26)What's new in android   jakarta gdg (2015-08-26)
What's new in android jakarta gdg (2015-08-26)
 
Ignacy Kowalczyk
Ignacy KowalczykIgnacy Kowalczyk
Ignacy Kowalczyk
 
Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone
 
Angular Extreme Performance - V2
Angular Extreme Performance - V2Angular Extreme Performance - V2
Angular Extreme Performance - V2
 
Slides bootcamp21
Slides bootcamp21Slides bootcamp21
Slides bootcamp21
 
Android session-1-sajib
Android session-1-sajibAndroid session-1-sajib
Android session-1-sajib
 
Node in Production at Aviary
Node in Production at AviaryNode in Production at Aviary
Node in Production at Aviary
 

More from NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
NAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
NAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
NAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
NAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
NAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
NAVER D2
 

More from NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

Recently uploaded

みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 

Recently uploaded (20)

みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 

Kandroid for nhn_deview_20131013_v5_final

  • 1. High Performance Android App. Development 양정수 (Jeongsoo Yang) yangjeongsoo at gmail.com www.kandroid.org
  • 2. CONTENT 1. The History of Android Performance Features 2. Performance Comparison of the Three Programming Models 3. Case Study : Performance Features of the Google Chrome Browser 4. Questionnaire : Multi-Core vs. GPU, Android vs. Chrome, and Beyond Android
  • 3. Let’s go back to last summer. “Why will Android always lag behind iOS?” If you are a manufacturer, how would you solve this problem? What was OOOOOOO’s Approach? 1. The Optimization of SoC, Android Platform, and Built-in Apps 2. Belief that this was Apple’s approach to success
  • 4. The history of Android Performance Features • Android alpha (at least two internal releases) • Android beta (5 Nov. 2007) – SDK : Java VM vs. Dalvik VM • Android first commercial release (23 Sep. 2008) • AOSP (21 Oct. 2008) – Zygote : Preload & Prelink (ASLR) • Cupcake (27 Apr. 2009) – NDK & Stable native API • Froyo (20 May 2010) – JIT (Just-in-time compilation) • Jingerbread (6 Dec. 2010) – StrictMode & NativeActivity • Honeycomb (22 Feb. 2011) – GPUI, SMP, and RenderScript • JellyBean (27 Jun. 2012) - Project Butter (Jank Buster)
  • 5. Fast & Smooth - Jelly Bean and Project Butter Source : http://www.youtube.com/watch?v=V5E5revikUU
  • 6. Facebook Android Development : A Scrolling Performance Story - Dec 5, 2012 Their Android Performance Challenges • • • • • • • Why Android stutter more? Measure Improvement Garbage Collection Memory View Optimization Main Thread User Perception Source : http://velocity.oreilly.com.cn/2012/ppts/Facebook-Android-Performance-OReilly-Velocity-Beijing-Dec-2012.pdf
  • 7. The World of List View Tuesday, June 1, 2010, Google I/O FPS 60 50 40 30 20 10 0 Dumb Recycling views ViewHolder Source : https://dl.google.com/googleio/2010/android-world-of-listview-android.pdf
  • 8. Memory and Performance March 29, 2013, 11th Kandroid Conference Event (AdapterView) Invalidate Measurement A Adapter • getView() Async Drawable Bitmap Decoding Storage Network I/O B • If an AdapterView has many children, Dumb part A is as important as part B. Layout Draw Recycle View Holder • If the AdapterView has few children, part B becomes a bottleneck. • Bitmap decoding is responsible. Source : http://www.kandroid.org/board/data/board/conference/file_in_body/1/511th_kandroidconf_memory_and_performance.pdf
  • 9. What lessons can we learn from history? 1. Always Measure • Before beginning optimization, ensure the problem requires solving. 2. Terminology used for Android Performance Features • Bitmap Allocation • Layer, DisplayList, DisplayList Property • Input Latency • FPS, VSync
  • 10. CONTENT 1. The History of Android Performance Features 2. Performance Comparison of the Three Programming Models 3. Case Study : Performance Features of the Google Chrome Browser 4. Questionnaire : Multi-Core vs. GPU, Android vs. Chrome, and Beyond Android
  • 11. Comparison and Analysis of the Three Programming Models in Google Android (2012, Intel) • What are the Three Programming Models ? • Working Flow Comparison • Execution Model Comparison • Performance Difference and Analysis • Differences in Development and Deployment • Conclusion & Unified Programming Model Source : http://people.apache.org/~xli/papers/applc2012-android-programming-models.pdf
  • 12. What are the Three Programming Models? 2008 2009 M AOSP Branch SDK (API Level) NDK (Revision) RenderScript android.support. v8.renderscript 1 2010 C D E F 23 45 6 7 8 1 2 34 2011 GH 2012 I 9 10 13 1415 5 6 7 2014 2013 J 16 8 17 18 9
  • 14. SDK : Workflow & Execution Model Android Runtime Android SDK JDK Input Source Program Java Compiler Bytecode (class File) dx utility Bytecode (dex File) Dalvik VM Output public static long sumArray(int[] arr) { long sum = 0; For (int i : arr) { sum += i; } return sum; } 000b: 000d: 000f: 0012: 0013: 0015: 0016: 0018: 0019: 001b: 001c: 001d: 001e: 0021: iload 05 iload 04 if_icmpge 0024 aload_3 iload 05 iaload istore 06 lload_1 iload 06 i2l ladd lstore_1 iinc 05, #+01 goto 000b 0007: 0009: 000b: 000c: 000d: if-ge v0, v2, 0010 aget v1, v8, v0 int-to-long v5, v1 add-long/2addr v3, v5 add-int/lit8 v0, v0, #int 1 000f: goto 0007
  • 15. SDK : Workflow & Execution Model TLS Activity Thread Queue Thread Pool H handleMessage() Looper execute() ViewRootImpl handleMessage() Message Queue • onPreExecute() • onProgressUpdate() • onPostExecute • doInBackground() AsyncTask
  • 16. NDK : Workflow & Execution Model A PPLICATIONS A PPLICATIONS HelloAndroid ActivityThread Receiver H Looper Handle Message() ViewRoot RUNTIME JNI Surface Manager FreeType SSL Libc Dalvik Virtual Machine Media Framework SGL L INUX K ERNEL Handle Message() L IBRARIES RUNTIME Core Libraries Custom Library OpenGL|ES ViewRoot Message Queue View L IBRARIES Handle Message() Custom 구현 Activity Handle Message() H Looper Service Provider Message Queue ActivityThread SQLite WebKit NativeActivity Custom Library Core Libraries Surface Manager JNI OpenGL|ES FreeType SGL SSL Libc Dalvik Virtual Machine Media Framework L INUX K ERNEL SQLite WebKit
  • 17. RenderScript : Workflow & Execution Model App Java Sources App Java Sources Reflected Layer (C99) helloworld.rs Native Layer (RenderScript) llvmrs-cc ScriptC_ helloworld .java ScriptField_ xxxxxxxxx .java helloworld.bc Native Layer (LLVM Code)
  • 18. RenderScript : Workflow & Execution Model Framework Layer App Java App Java App Java Sources Sources Sources Dalvik JIT Compiler Multicore CPUs Reflected Layer ScriptC_ helloworld .java GPUs/DSPs libbcc helloworld.bc Native Layer (LLVM Code) APK file LLVM based Jit compiler System lib. .bc files
  • 19. Performance Analysis : Multiple Worker Thread 70 60 50 SDK 40 SDK-MT 30 NDK NDK-MT 20 10 0 200 300 400 500 600 700 800 900 Source : http://people.apache.org/~xli/papers/applc2012-android-programming-models.pdf 1000
  • 20. Performance Analysis : Runtime design diff. 70 60 50 40 SDK-MT NDK-MT 30 Renderscript 20 10 0 200 300 400 500 600 700 800 900 1000 Source : http://people.apache.org/~xli/papers/applc2012-android-programming-models.pdf
  • 21. Current Issues & Unified Programming Model 2 Class Programmability Sub Class SDK NDK + RS X X X 3 Library Extensibility O Strong Typing and Verification O X O O Portability Security RS O Memory Management NDK △ O O 3 X X X Vector Type X △ O O Thread Pool O △ O O OpenGLES Performance O O O X O 1 1. Is it possible to support vector type without changing the JNI implementation? 2. Why did Google make RS separate from NDK? 3. Are Memory Management and Strong Typing critical issues?
  • 22. Current Issues & Unified Programming Model GDK : What is GDK? Hooray! We done the GDK building system. This building system is independent on NDK. It builds what is should (bitcodes), and then transfer the control to NDK building system, doing the remaining building. This code is still ugly. Need cleanup. gdk git commit id : edde771d8940a6f1b00fd68bcca1486b575e6d9e Author : Nowar Gu <nowar100@gmail.com>
  • 23. GDK : hello-llvm Sample Code Android-portable.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello_llvm LOCAL_CFLAGS := -D NUM=7788 LOCAL_SRC_FILES := hello_llvm.c test.cpp LOCAL_C_INCLUDES := jni/test-include include $(BUILD_BITCODE) include $(CLEAR_VARS) LOCAL_MODULE := test2 LOCAL_SRC_FILES := test2.c include $(BUILD_BITCODE) Build Command $ cd ~/android-4.1.1_r1/gdk/samples/hello-llvm/jni $ export OUT=~/android-4.1.1_r1/out/target/product/generic $ ../../../gdk-build --ndk-root=~/android-ndk-r8b
  • 24. $ ../../../gdk-build --ndk-root=/home/jsyang/android-ndk-r8b Compile Bitcode : hello_llvm <= hello_llvm.c Compile++ Bitcode: hello_llvm <= test.cpp BitcodeLibrary : libhello_llvm.bc Install BCLib : libhello_llvm.bc => res/raw/libhello_llvm.bc Compile Bitcode : test2 <= test2.c BitcodeLibrary : libtest2.bc Install BCLib : libtest2.bc => res/raw/libtest2.bc Gdbserver Gdbsetup Gdbserver Gdbsetup : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver : libs/armeabi/gdb.setup : [arm-linux-androideabi-4.6] libs/armeabi-v7a/gdbserver : libs/armeabi-v7a/gdb.setup Compile thumb : hello_llvm <= hello_llvm.c Compile++ thumb : hello_llvm <= test.cpp StaticLibrary : libstdc++.a SharedLibrary : libhello_llvm.so Install : libhello_llvm.so => libs/armeabi/libhello_llvm.so Compile thumb : hello_llvm <= hello_llvm.c Compile++ thumb : hello_llvm <= test.cpp StaticLibrary : libstdc++.a SharedLibrary : libhello_llvm.so Install : libhello_llvm.so => libs/armeabi-v7a/libhello_llvm.so
  • 25. Google I/O 2013 : Game Development Env. An Introduction to Play Game Services Game Services In Practice
  • 26. CONTENT 1. The History of Android Performance Features 2. Performance Comparison of the Three Programming Models 3. Case Study : Performance Features of the Google Chrome Browser 4. Questionnaire : Multi-Core vs. GPU, Android vs. Chrome, and Beyond Android
  • 27. Google I/O 2012 Keynote Android vs. Chrome
  • 28. Google I/O 2013 Keynote Sundar Pichai (SVP, Android, Chrome & Apps)
  • 29. Performance Features of the Google Chrome Browser • Why did Google Develop Chrome? • Chrome’s Multi-process Architecture on Android • Chrome’s Hardware Acceleration on Android • Chrome’s Networking on Android • Improved VSync scheduling for Chrome on Android
  • 30. Why did Google Develop Chrome? Chromium Chrome browser : uses multiple processes ! Chromium safer Sandbox the web app’s process faster Separate threads for separate web apps blink v8 more stable Chromium OS Fast rendering engine, small footprint Out-of-Process iframes Optimized JS engine, many opportunities Separate address spaces for separate web apps
  • 31. Chrome’s Multi-process Architecture on Android Source : https://sites.google.com/a/chromium.org/dev/developers/design-documents/multi-process-architecture
  • 32. Chrome’s Multi-process Architecture on Android Browser Process Main Thread (UI) I/O Thread Render Process IPC Main Thread Render Thread android:process=":sandboxed_process0" android:isolatedProcess="true“ android:process=":privileged_process2" android:isolatedProcess="false" android:isolatedProcess If set to true, this service will run under a special process that is isolated from the rest of the system and has no permissions of its own. The only communication with it is through the Service API (binding and starting).
  • 33. Chrome’s Hardware Acceleration on Android Software Rendering Architecture Render Process Shared Memory HWND Bitmap WebKit / Skia Brower Process IPC Source : http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome
  • 34. Chrome’s Hardware Acceleration on Android Compositing with the GPU process Browser Process HWND Shared Memory Render Process Commands GPU Process (server) WebKit / Skia Bitmaps & Arrays Compositor Context Compositor GL/D3D IPC Source : http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome
  • 35. Chrome’s Hardware Acceleration on Android Compositing with the GPU process
  • 36. Chrome’s Hardware Acceleration on Android Compositing with the GPU Thread USER u0_a94 u0_a94 u0_a94 u0_a94 u0_a94 u0_a94 u0_a94 u0_a94 u0_a94 u0_a94 u0_a94 ... u0_a94 ... u0_i50 PID PPID 24458 125 24462 24458 24463 24458 24464 24458 24465 24458 24466 24458 24467 24458 24468 24458 24469 24458 24470 24458 24472 24458 NAME org.chromium.content_shll_apk GC Signal Catcher JDWP Compiler ReferenceQueueD FinalizerDaemon FinalizerWatchd Binder_1 Binder_2 AsyncTask #1 Browser Process GPU Thread (server) Compositor Context GL/D3D 24486 24458 ntent_shell_apk 24526 125 org.chromium.content_shel_apk:sandboxed_process1
  • 37. Chrome’s Hardware Acceleration on Android systrace, chrome://gpu
  • 38. Improved VSync Scheduling on Android Improved vsync scheduling for Chrome on Android - Author: skyostil@ • Motivation • Improved vsync scheduling • Vsync notification message • Triggering vsync based on input • Case studies • Conclusion Source : https://docs.google.com/a/chromium.org/document/d/16822du6DLKDZ1vQVNWI3gDVYoSqCSezgEmWZ0arvkP8/edit
  • 39. Google I/O 2012 : For Butter or Worse - VSync VSync Drawing without VSync 0 VSync 1 1 1 2 3 CPU 3 3 Display GPU 4 2 2 3 4 3 1 1 1 3 2 0 VSync 2 2 1 Drawing with VSync VSync 4 4 Source : http://commondatastorage.googleapis.com/io2012/presentations/live%20to%20website/109.pdf 4 Display GPU CPU
  • 40. Improved VSync Scheduling on Android Old Architecture System VSync Browser Process internal timer’s tick Render Process
  • 41. Improved VSync Scheduling on Android Old Architecture ~3.2ms System VSync internal timer’s tick Browser Process Render Process
  • 42. Improved VSync Scheduling on Android Old Architecture and Problems Source : https://docs.google.com/a/chromium.org/document/d/16822du6DLKDZ1vQVNWI3gDVYoSqCSezgEmWZ0arvkP8/edit
  • 43. Improved VSync Scheduling on Android New Architecture ~3.2ms System VSync internal timer’s tick Browser Process Render Process
  • 44. Improved VSync Scheduling on Android New Architecture : Improvement and Problem Source : https://docs.google.com/a/chromium.org/document/d/16822du6DLKDZ1vQVNWI3gDVYoSqCSezgEmWZ0arvkP8/edit
  • 45. Improved VSync Scheduling on Android New Architecture : Improvement and Limit Conclusion This document describes improvements to vsync scheduling which allows Chrome on Android to generally respond to scroll gestures within a single vsync interval. These improvements apply to regular page scrolling, while lowering the latency of main thread and JavaScript-driven updates are left as future work. Source : https://docs.google.com/a/chromium.org/document/d/16822du6DLKDZ1vQVNWI3gDVYoSqCSezgEmWZ0arvkP8/edit
  • 46. What lessons can we learn from Chrome? 1. On a GUI system, a scheduler for input and drawing is the most important . 2. If you review Chrome technology in this perspective, you can find valuable documents. 3. This is one document that is recommended. https://docs.google.com/document/d/1LUFA8MDpJcDHE0_L2EHvrcwqOMJhzl5dqb0AlBSqHOY/edit
  • 47. CONTENT 1. The History of Android Performance Features 2. Performance Comparison of the Three Programming Models 3. Case Study : Performance Features of the Google Chrome Browser 4. Questionnaire : Multi-Core vs. GPU, Android vs. Chrome, and Beyond Android
  • 48. Multi-Core vs. GPU ~12GB/s ISP 70GFLOPs LPDDR3 GPU CPU DSP ~20GFLOPs Dark Silicon and the End of Multicore Scaling http://falsedoor.com/doc/ISCA11.pdf GreenDroid: An Architecture for the Dark Silicon Age http://darksilicon.org/papers/taylor-aspdac-final-2012.pdf
  • 49. Android vs. Chrome We have two options: The first is maintaining the status quo, the other is merging the two platforms. Status Quo • Android : Phone, Tablet, Google TV, Car • Chromium : Chrome Brower, Chrome OS Merged State • Android-centric Merger • Chrome-centric Merger • Alternate Merger
  • 50. Android vs. Chrome For Android-centric merger to succeed, we must answer one question: “Is it possible to build chrome via Android Infrastructure?” For Chrome-centric merger to succeed, we must answer a different question: “Is it possible to run Android Apps in the Chrome?” Do you have any alternate courses?
  • 51. Beyond Android With the current market saturation, is it possible to create a new platform? • B2G, Tizen, LG Web OS, Ubuntu Mobile The successful development of a new platform could lead to advances. Nevertheless, it would be just one more in an already saturated market. So, we must streamline the market and focus on cross-platform compatibility with the status quo. • Web-based (e.g. PhoneGap) • Native-based (e.g. Cocos2d-x) • VM-based (e.g. Mono)
  • 52. CONTENT 1. The History of Android Performance Features 2. Performance Comparison of the Three 3. 4. Programming Models Case Study : Performance Features of the Google Chrome Browser Questionnaire : Multi-Core vs. GPU, Android vs. Chrome, and Beyond Android 지금까지 경청해 주셔서 감사합니다. 질문 있으시면 해 주세요.