你们经常会抱怨安卓平台没有一个统1、好用的性能检查工具。不能像iOS的instrument那样方便。html
图片来自:Instruments Helpnode
好比,Unity Blog在3年前就已经教你们如何使用instrument来进行性能检测了。android
Profiling with Instruments – Unity Bloggit
其实目前的Android Studio已经提供了很好的安卓平台的性能检查工具。github
https://developer.android.com/studio/profileapi
这里主要介绍CPU Profiler来检查Unity原生函数的性能。就像iOS上的instrument同样。app
图形相关的性能检测,可使用https://github.com/google/gapid。函数
下文中我使用的Android Studio版本为:3.5 preview,Unity版本为:2018.3.0b11。测试工程为:SurvivalShooter(Asset Store) 。工具
首先,根据android studio的文档:性能
https://developer.android.com/studio/profile/cpu-profiler?hl=en
Sampled (Native): Captures sampled traces of your app’s native threads. To use this configuration, you must deploy your app to a device running Android 8.0 (API level 26) or higher.
进行native sample的设备系统版本要求是:Android 8.0 (API level 26)
为了能够检测脚本的代码开销,(一样,就像instrument那样)推荐Scripting Backend使用il2cpp。
咱们能够本身写一个函数,用来测试。(固然,工程中的脚本也是同样的)
以后,咱们把工程按照Gradle的形式导出,以便以后使用as打开。
正常使用as打开导出的工程。在
src/main/jniLibs/armeabi-v7a/
目录下,能够找到相关的so文件。咱们主要关注libunity.so以及libil2cpp.so。前者是引擎部分,后者是开发者的脚本部分。此时的so都是符号信息不全的。因此咱们要作的只是替换符号信息更全的so。
首先来替换libunity.so,能够在Unity目录下
PlaybackEngines/AndroidPlayer/Variations/il2cpp/Development/Libs/armeabi-v7a/
这里找到带符号信息的so。
以后,若是还想查看脚本的调用开销(il2cpp),咱们就须要将带符号信息的libil2cpp替换。
它的路径在:
工程/Temp/StagingArea/symbols/armeabi-v7a/libil2cpp.so.debug
能够看到,gradle工程中的libil2cpp.so只有7.7mb,而带符号信息的libil2cpp则有88.3mb。
点击右上角的Profile Button,就能够开始进行性能检测了。
选中CPU栏,检测项目中有Java Method、Sample C/C++等等。选择C/C++,便可看到一个timeline。点击recorde,则开始记录call trace。
能够看各个线程的函数调用的chart,整个流程比较流畅。
也能够按照时间开销,整理为堆栈调用的形式。这里能够看到使用il2cpp的脚本函数调用。
咱们能够找一找咱们的UpdateTest1那个函数。
固然,这里和本文开头Unity Blog中在iOS平台上使用Instrument相似,主要是用来检测一些原生函数的性能,你们能够将它做为Unity Profiler在安卓平台上的一种补充。
-EOF-
最后打个广告,欢迎支持个人书