Presentation is loading. Please wait.

Presentation is loading. Please wait.

Of Bytes, Cycles and Battery Life. Who am [2] [1]

Similar presentations


Presentation on theme: "Of Bytes, Cycles and Battery Life. Who am [2] [1]"— Presentation transcript:

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

11

12

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

27

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


Download ppt "Of Bytes, Cycles and Battery Life. Who am [2] [1]"

Similar presentations


Ads by Google