发明了,可以一针见血的指出程序的性能瓶颈。
火焰图的绘制工具可以在这里下载:https://github.com/brendangregg/FlameGraph
将simpleperf程序push到手机的目录下。并修改其权限
adb push simpleperf /data/local/tmp/
adb shell chmod 777 /data/local/tmp/simpleperf
在Android设备上运行simpleper record
命令,如果执行成功将生成perf.data文件(存放收集的信息)。
如果只针对某个进程。就这么操作。例如我想查看android系统中camera的provider进程的情况。
ps -A | grep camera
cameraserver 890 1 1672076 42228 0 0 efg S android.hardware.camera.provider@2.4-service_64
cameraserver 1319 1 70512 7612 0 0 efg S cameraserver
u0_a102 24624 808 6039784 86788 0 0 efg S com.oppo.camera
890为你所要看的provider进程的
adb shell /data/local/tmp/simpleperf record -p 890 --duration 30
adb shell /data/local/tmp/simpleperf record -p [PID] -f [sample/s] --duration [Time]
将生成的数据perf.data拷贝到本地。用
$python report_sample.py >out.perf
$stackcollapse-perf.pl out.perf >out.folded
$./flamegraph.pl out.folded > graph.svg
使用该命令可以查看最耗时的共享库文件
simpleperf report --sort dso
当你找到了最耗时的共享库,再使用该命令可以找到共享库中最耗时的函数
$ simpleperf report --dsos library.so --sort symbol
$ simpleperf report --sort tid,comm
在找到了最耗时的线程之后,使用该命令可以查找线程中最耗时的共享库
$ simpleperf report --tids threadID --sort dso
simpleperf report -g 或者 reprot.py -g
本文地址:https://blog.csdn.net/dragon261622968/article/details/107293995
如对本文有疑问, 点击进行留言回复!!
Codeforces Round #649 (Div. 2) C-Ehab and Prefix MEXs
微信公众号ios和android验签的区别(解决ios验签报错)
IOS系统中使用new Date()报错valid Date
网友评论