You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jianglk.darker
7ee447c011
|
4 months ago | |
---|---|---|
.. | ||
CppApi | 4 months ago | |
JavaApi | 4 months ago | |
SimpleperfExampleOfKotlin | 4 months ago | |
SimpleperfExamplePureJava | 4 months ago | |
SimpleperfExampleWithNative | 4 months ago | |
.clang-format | 4 months ago | |
README.md | 4 months ago |
README.md
Examples of using simpleperf to profile Android applications
Table of Contents
Introduction
Simpleperf is a native profiler used on Android platform. It can be used to profile Android applications. Its documentation is here. Instructions of preparing your Android application for profiling are here. This directory is to show examples of using simpleperf to profile Android applications. The meaning of each directory is as below:
../scripts/ -- contain simpleperf binaries and scripts.
SimpleperfExamplePureJava/ -- contains an Android Studio project using only Java code.
SimpleperfExampleWithNative/ -- contains an Android Studio project using both Java and C++ code.
SimpleperfExampleOfKotlin/ -- contains an Android Studio project using Kotlin code.
CppApi/ -- contains an Android Studio project using c++ app_api to record.
JavaApi/ -- contains an Android Studio project using Java app_api to record.
It can be downloaded as below:
$ git clone https://android.googlesource.com/platform/system/extras
$ cd extras/simpleperf/demo
The testing environment:
Android Studio 3.2
test device: Android O (Google Pixel 2)
test device: Android N (Google Nexus 6P)
Please make sure your device having Android version >= N.
Profile a Java application
Android Studio project: SimpleExamplePureJava
steps:
- Build and install the application:
# Open SimpleperfExamplesPureJava project with Android Studio,
# and build this project successfully, otherwise the `./gradlew` command below will fail.
$ cd SimpleperfExamplePureJava
# On windows, use "gradlew" instead.
$ ./gradlew clean assemble
$ adb install -r app/build/outputs/apk/app-profiling.apk
- Record profiling data:
$ cd ../../scripts/
# app_profiler.py collects profiling data in perf.data, and binaries on device in binary_cache/.
$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplepurejava
- Show profiling data:
# report_html.py generates profiling result in report.html.
$ python report_html.py --add_source_code --source_dirs ../demo --add_disassembly
Profile a Java/C++ application
Android Studio project: SimpleExampleWithNative
steps:
- Build and install the application:
# Open SimpleperfExamplesWithNative project with Android Studio,
# and build this project sucessfully, otherwise the `./gradlew` command below will fail.
$ cd SimpleperfExampleWithNative
# On windows, use "gradlew" instead.
$ ./gradlew clean assemble
$ adb install -r app/build/outputs/apk/profiling/app-profiling.apk
- Record profiling data:
$ cd ../../scripts/
# app_profiler.py collects profiling data in perf.data, and binaries on device in binary_cache/.
$ python app_profiler.py -p com.example.simpleperf.simpleperfexamplewithnative
- Show profiling data:
# report_html.py generates profiling result in report.html.
$ python report_html.py --add_source_code --source_dirs ../demo --add_disassembly
Profile a Kotlin application
Android Studio project: SimpleExampleOfKotlin
steps:
- Build and install the application:
# Open SimpleperfExamplesOfKotlin project with Android Studio,
# and build this project sucessfully, otherwise the `./gradlew` command below will fail.
$ cd SimpleperfExampleOfKotlin
# On windows, use "gradlew" instead.
$ ./gradlew clean assemble
$ adb install -r app/build/outputs/apk/profiling/app-profiling.apk
- Record profiling data:
$ cd ../../scripts/
# app_profiler.py collects profiling data in perf.data, and binaries on device in binary_cache/.
$ python app_profiler.py -p com.example.simpleperf.simpleperfexampleofkotlin
- Show profiling data:
# report_html.py generates profiling result in report.html.
$ python report_html.py --add_source_code --source_dirs ../demo --add_disassembly
Profile via app_api
Android Studio project: CppApi and JavaApi
steps:
- Build and install the application:
# Open CppApi project with Android Studio,
# and build this project sucessfully, otherwise the `./gradlew` command below will fail.
$ cd CppApi
# On windows, use "gradlew" instead.
$ ./gradlew clean assemble
$ adb install -r app/build/outputs/apk/debug/app-debug.apk
- Prepare recording environment.
$ cd ../../scripts/
$ python api_profiler.py prepare
- Run the CppApi app.
# launch the app via cmdline, can also launch it on device.
# A profiling file is generated each time running the app.
$ adb shell am start simpleperf.demo.cpp_api/.MainActivity
- Collect profiling data.
$ python api_profiler.py collect -p simpleperf.demo.cpp_api
- Report profiling data.
$ python report_html.py -i simpleperf_data/* --aggregate-by-thread-name