• Home
  • History
  • Annotate
  • only in /system/extras/simpleperf/demo/
NameDateSize

..11-Jun-20184 KiB

README.md11-Jun-20185 KiB

SimpleperfExampleOfKotlin/11-Jun-20184 KiB

SimpleperfExamplePureJava/11-Jun-20184 KiB

SimpleperfExampleWithNative/11-Jun-20184 KiB

README.md

1# Examples of using simpleperf to profile Android applications
2
3## Table of Contents
4
5- [Introduction](#introduction)
6- [Profiling Java application](#profiling-java-application)
7- [Profiling Java/C++ application](#profiling-javac-application)
8- [Profiling Kotlin application](#profiling-kotlin-application)
9
10## Introduction
11
12Simpleperf is a native profiler used on Android platform. It can be used to profile Android
13applications. It's document is at [here](https://android.googlesource.com/platform/system/extras/+/master/simpleperf/README.md).
14Instructions of preparing your Android application for profiling are [here](https://android.googlesource.com/platform/system/extras/+/master/simpleperf/README.md#Android-application-profiling).
15This directory is to show examples of using simpleperf to profile Android applications. The
16meaning of each directory is as below:
17
18    ../scripts/                  -- contain simpleperf binaries and scripts.
19    SimpleperfExamplePureJava/   -- contains an Android Studio project using only Java code.
20    SimpleperfExampleWithNative/ -- contains an Android Studio project using both Java and C++ code.
21    SimpleperfExampleOfKotlin/   -- contains an Android Studio project using Kotlin code.
22
23It can be downloaded as below:
24
25    $ git clone https://android.googlesource.com/platform/system/extras
26    $ cd extras/simpleperf/demo
27
28## Profiling Java application
29
30    Android Studio project: SimpleExamplePureJava
31    test device: Android O (Google Pixel XL)
32    test device: Android N (Google Nexus 5X)
33
34steps:
351. Build and install app:
36```
37# Open SimpleperfExamplesPureJava project with Android Studio,
38# and build this project sucessfully, otherwise the `./gradlew` command below will fail.
39$ cd SimpleperfExamplePureJava
40
41# On windows, use "gradlew" instead.
42$ ./gradlew clean assemble
43$ adb install -r app/build/outputs/apk/app-profiling.apk
44```
45
462. Record profiling data:
47```
48$ cd ../../scripts/
49$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplepurejava
50```
51
523. Show profiling data:
53```
54a. show call graph in txt mode
55    # On windows, use "bin\windows\x86\simpleperf" instead.
56    $ bin/linux/x86_64/simpleperf report -g | more
57        If on other hosts, use corresponding simpleperf binary.
58b. show call graph in gui mode
59    $ python report.py -g
60c. show samples in source code
61    $ python annotate.py -s ../demo/SimpleperfExamplePureJava
62    $ gvim annotated_files/java/com/example/simpleperf/simpleperfexamplepurejava/MainActivity.java
63        check the annoated source file MainActivity.java.
64```
65
66## Profiling Java/C++ application
67
68    Android Studio project: SimpleExampleWithNative
69    test device: Android O (Google Pixel XL)
70    test device: Android N (Google Nexus 5X)
71
72steps:
731. Build and install app:
74```
75# Open SimpleperfExamplesWithNative project with Android Studio,
76# and build this project sucessfully, otherwise the `./gradlew` command below will fail.
77$ cd SimpleperfExampleWithNative
78
79# On windows, use "gradlew" instead.
80$ ./gradlew clean assemble
81$ adb install -r app/build/outputs/apk/app-profiling.apk
82```
83
842. Record profiling data:
85```
86$ cd ../../scripts/
87$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplewithnative
88    It runs the application and collects profiling data in perf.data, binaries on device in binary_cache/.
89```
90
913. Show profiling data:
92```
93a. show call graph in txt mode
94    # On windows, use "bin\windows\x86\simpleperf" instead.
95    $ bin/linux/x86_64/simpleperf report -g | more
96        If on other hosts, use corresponding simpleperf binary.
97b. show call graph in gui mode
98    $ python report.py -g
99c. show samples in source code
100    $ python annotate.py -s ../demo/SimpleperfExampleWithNative
101    $ find . -name "native-lib.cpp" | xargs gvim
102        check the annoated source file native-lib.cpp.
103```
104
105## Profiling Kotlin application
106
107    Android Studio project: SimpleExampleOfKotlin
108    test device: Android O (Google Pixel XL)
109    test device: Android N (Google Nexus 5X)
110
111steps:
1121. Build and install app:
113```
114# Open SimpleperfExamplesOfKotlin project with Android Studio,
115# and build this project sucessfully, otherwise the `./gradlew` command below will fail.
116$ cd SimpleperfExampleOfKotlin
117
118# On windows, use "gradlew" instead.
119$ ./gradlew clean assemble
120$ adb install -r app/build/outputs/apk/profiling/app-profiling.apk
121```
122
1232. Record profiling data:
124```
125$ cd ../../scripts/
126$ python app_profiler.py -p com.example.simpleperf.simpleperfexampleofkotlin
127    It runs the application and collects profiling data in perf.data, binaries on device in binary_cache/.
128```
129
1303. Show profiling data:
131```
132a. show call graph in txt mode
133    # On windows, use "bin\windows\x86\simpleperf" instead.
134    $ bin/linux/x86_64/simpleperf report -g | more
135        If on other hosts, use corresponding simpleperf binary.
136b. show call graph in gui mode
137    $ python report.py -g
138c. show samples in source code
139    $ python annotate.py -s ../demo/SimpleperfExampleOfKotlin
140    $ find . -name "MainActivity.kt" | xargs gvim
141        check the annoated source file MainActivity.kt.
142```
143