Download presentation
Presentation is loading. Please wait.
Published byHugo O’Neal’ Modified over 9 years ago
1
Of Bytes, Cycles and Battery Life
2
Who am I? @badlogicgames http://www.badlogicgames.com [2] [1]
3
How to reduce your APK size Memory Analysis Tools Performance Analysis Tools What i‘ll talk about
4
Reduce asset size – pngcrush your PNGs [3] – SVG (YMMV) [4] – lower bit-rates for audio Reduce code size – Remove unnecessary dependencies! – Proguard, for Class files [5] [6] – Dexguard, for Dex files [7] How to reduce your APK size
5
Multiple-APKs to the „rescue“ [8] – One APK per screen density – One APK per texture compression algorithm – Use Google Play filters – Easier with new Android Gradle build system APK Expansion files [9] – hosted by Google Roll your own „Expansion files“ – Avoid if you can! „But i can‘t reduce my APK size“
6
Memory Analysis Tools „But we have a Garbage Collector!“ – You can still „leak“ memory – Nasty static vars referencing unused objects – Hidden object references – Native memory allocated by Java classes If you write games, GC kills your steady framerate
7
DDMS [10] Heap View
8
DDMS Allocation Tracker
9
HPROF/Eclipse MAT [11] Select the process Click Save to a location of your choice Convert to „real“ HPROF file Open in Eclipse MAT [12]
10
HPROF/Eclipse MAT
13
Performance Analysis Tools Why do we want to analyse? – Jerky animations – Do less, conserve battery – Better user Experience What do we want to analyse? – Time spent in Java code – Time spent in Native code – Time spent drawing stuff
14
Before we start... Never use the emulator! – Ever, think of the kittens Identify hotspots in your app, not in microbenchmarks Only spend time if you have a real problem
15
Java Profilers DDMS – Quite capable method level profiler – Good enough for 99% of use cases – Works with any Android version 4.1+ Profiling tools – Systrace [13], More powerful, also tracks OS calls Needs root and Android 4.1+ – We‘ll check out the graphical parts later
16
DDMS Start app Navigate to problematic activity, hit Wait a bit, hit View profiling data – Ignore absolute time, only care for relative timings – Ignore trivial getters/setters, instrumentation messes with timings
17
DDMS
18
Native Code Profilers Android NDK Profiler [14] – Not an official NDK tool – Setup a bit involved Device specific CPU profilers – NVIDIA Nsight [15],... Roll your own – Instrument manually – Track down hotspots
19
Graphics Profilers What do we analyse? – Overdraw, your biggest enemy – Draw calls, your second biggest enemy Use DDMS/systrace – Related to memory Textures on VRAM (which is usually RAM) Bitmaps in RAM
20
Graphics Profilers 4.1+ Profiling tools GPU Vendor Specific – NVIDIA [16], Qualcomm [17], Imagination Technologies [18] – Outside of scope of this talk
21
Visualize Overdraw [19]
22
Visualize Overdraw Normal Color – 0 Overdraw Blue – 1x Overdraw Green – 2x Overdraw Light Red – 3x Overdraw Dark Red – +4x Overdraw
23
Visualize Overdraw Hierarchy View [20] Window -> Open Perspective -> Other...
24
Visualize Overdraw
25
Tracer for OpenGL [21] Window -> Open Perspective -> Other... Click Enter package name Wait
26
Visualize Overdraw
28
Closing Words So much to tell, so little time See Dalvik Performance Tips [22] Read all references – Your users will thank you for excellent battery life and buttery smooth UIs
29
FIN Thanks for Listening Questions?
30
References [1] http://www.amazon.com/Beginning-Android-Games-Mario-Zechner/dp/1430246774http://www.amazon.com/Beginning-Android-Games-Mario-Zechner/dp/1430246774 [2] http://libgdx.badlogicgames.com/http://libgdx.badlogicgames.com/ [3] http://pmt.sourceforge.net/pngcrush/http://pmt.sourceforge.net/pngcrush/ [4] https://code.google.com/p/svg-android/https://code.google.com/p/svg-android/ [5] http://developer.android.com/tools/help/proguard.htmlhttp://developer.android.com/tools/help/proguard.html [6] http://proguard.sourceforge.net/index.htmlhttp://proguard.sourceforge.net/index.html [7] http://www.saikoa.com/dexguardhttp://www.saikoa.com/dexguard [8] http://developer.android.com/google/play/publishing/multiple-apks.htmlhttp://developer.android.com/google/play/publishing/multiple-apks.html [9] http://developer.android.com/google/play/expansion-files.htmlhttp://developer.android.com/google/play/expansion-files.html [10] http://developer.android.com/tools/debugging/ddms.htmlhttp://developer.android.com/tools/debugging/ddms.html [11] http://android-developers.blogspot.co.at/2011/03/memory-analysis-for-android.htmlhttp://android-developers.blogspot.co.at/2011/03/memory-analysis-for-android.html
31
References [12] http://www.eclipse.org/mat/http://www.eclipse.org/mat/ [13] http://developer.android.com/tools/help/systrace.htmlhttp://developer.android.com/tools/help/systrace.html [14] https://code.google.com/p/android-ndk-profiler/https://code.google.com/p/android-ndk-profiler/ [15] http://www.nvidia.com/object/nsight.htmlhttp://www.nvidia.com/object/nsight.html [16] https://developer.nvidia.com/tegra-profilerhttps://developer.nvidia.com/tegra-profiler [17] https://developer.qualcomm.com/mobile-development/mobile-technologies/gaming-graphics-optimization-adreno/tools- and-resourceshttps://developer.qualcomm.com/mobile-development/mobile-technologies/gaming-graphics-optimization-adreno/tools- and-resources [18] http://www.imgtec.com/powervr/insider/sdkdownloads/http://www.imgtec.com/powervr/insider/sdkdownloads/ [19] http://www.curious-creature.org/2012/12/01/android-performance-case-study/http://www.curious-creature.org/2012/12/01/android-performance-case-study/ [20] http://developer.android.com/tools/debugging/debugging-ui.htmlhttp://developer.android.com/tools/debugging/debugging-ui.html [21] http://developer.android.com/tools/help/gltracer.htmlhttp://developer.android.com/tools/help/gltracer.html [22] http://developer.android.com/training/articles/perf-tips.htmlhttp://developer.android.com/training/articles/perf-tips.html
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.