Home | History | Annotate | only in /system/extras/simpleperf/demo
Up to higher level directory
NameDateSize
README.md06-Dec-20175K
SimpleperfExampleOfKotlin/06-Dec-2017
SimpleperfExamplePureJava/06-Dec-2017
SimpleperfExampleWithNative/06-Dec-2017

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 
     12 Simpleperf is a native profiler used on Android platform. It can be used to profile Android
     13 applications. It's document is at [here](https://android.googlesource.com/platform/system/extras/+/master/simpleperf/README.md).
     14 Instructions of preparing your Android application for profiling are [here](https://android.googlesource.com/platform/system/extras/+/master/simpleperf/README.md#Android-application-profiling).
     15 This directory is to show examples of using simpleperf to profile Android applications. The
     16 meaning 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 
     23 It 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 
     34 steps:
     35 1. 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 
     46 2. Record profiling data:
     47 ```
     48 $ cd ../../scripts/
     49 $ python app_profiler.py -p com.example.simpleperf.simpleperfexamplepurejava
     50 ```
     51 
     52 3. Show profiling data:
     53 ```
     54 a. 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.
     58 b. show call graph in gui mode
     59     $ python report.py -g
     60 c. 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 
     72 steps:
     73 1. 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 
     84 2. 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 
     91 3. Show profiling data:
     92 ```
     93 a. 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.
     97 b. show call graph in gui mode
     98     $ python report.py -g
     99 c. 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 
    111 steps:
    112 1. 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 
    123 2. 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 
    130 3. Show profiling data:
    131 ```
    132 a. 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.
    136 b. show call graph in gui mode
    137     $ python report.py -g
    138 c. 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