首页 > 其他分享 >android 性能优化 -systrace

android 性能优化 -systrace

时间:2024-07-04 11:52:23浏览次数:9  
标签:systrace trace Systrace Alerts 线程 进程 android 优化 CPU

简介:

Systrace允许监视和跟踪Android系统的行为(trace)。它会指明系统都在哪些工作上花费时间、CPU周期都用在哪里,甚至可以看到每个线程、进程在指定时间内都在干嘛。它同时还会突出观测到的问题,从垃圾回收到渲染内容都可能是问题对象,甚至提供建议的解决方案。但是不能确定具体有问题的代码在哪里,这里可用traceview工具。

使用:

我们来看看如何导出trace以及使用它来优化UI,打开Android Studio,启动Android Device Monitor。



说明1:trace输出的文件路径;

说明2:配置抓取Systrace的时间,通常设置5秒,并在5秒内重现问题,时间太短会导致问题重现时没有被抓到,时间太长会导致JavaHeap不够而无法保存,因此在能抓到问题点的情况下,时间越小越好;

说明3:Buffer Size是存储Systrace的size,同样的,太小会导致信息丢失,时间太长会导致Java Heap不够而无法保存,建议20480KB;

说明4:如果用户有自己在应用程序中加入自己的Systrace log,如下:

Trace.beginSection(“newInstance”);
Trace.endSection( );

那么此处必须选择这个应用对应的进程名字,否则新加的Systrace log不会被抓到。

说明5:这部分TAG全部勾选。说明6:针对UI相关的性能问题,以下TAG必须勾选:——Bionic C Library——CPU Frequency——CPU Idle——CPU Load如果设备可以root,root后可以看到更多的TAG,root后请勾选:——eMMC commands——Synchonization——Kernel Workqueues

设置完成后点击“OK"开始抓取systrace,请在此时重现性能问题,设置的时间到后,trace.html文件会被自动保存下来。用Chrome浏览器打开此文件。如果生成的trace文件无法直接打开,请在地址栏输入chrome://tracing/,然后选择load按钮,把生成的html文件load进来(不要直接open)。



Trace报告的X轴表示时间,Y轴以进程进行分组,进程组内是各个线程。每个应用进程包含每个线程所包含的所有跟踪标记,包括基于启用跟踪类别的高级跟踪事件的层次结构。

除了进程和线程运行信息,还有两个重要信息:

  • Frame:

在每个App进程,都有一个Frames行,正常情况以绿色的圆点表示。当圆点颜色为黄色或者红色时,意味着这一帧超过16.6ms(即发现丢帧),这时需要通过放大那一帧进一步分析问题。对于Android 5.0(API level 21)或者更高的设备,该问题主要聚焦在UI Thread和Render Thread这两个线程当中。对于更早的版本,则所有工作在UI Thread。

  • Alerts:

Systrace能自动分析trace中的事件,并能自动高亮性能问题作为一个Alerts,建议调试人员下一步该怎么做。比如对于丢帧时,点击黄色或红色的Frames圆点便会有相关的提示信息;另外,在systrace的最右侧,有一个Alerts tab可以展开,这里记录着所有的的警告提示信息。当我们点击了Alerts或者点击右边的Alerts列表中的任何一点我们可以看到在界面的最底部会相对应的优化提示以及可能会出现优化的视频教程链接。



Trace报告可以进行一些简单的交互,比如放大、缩小、平移和拖动等。下表列出了几个常用的快捷键:

导航操作 作用
w 放大 [+shift]速度更快
s 缩小 [+shift]速度更快
a 左移 [+shift]速度更快
d 右移 [+shift]速度更快
常用操作 作用
f 放大当前选定区域
v 高亮VSync
m 标记当前选定区域
0 恢复trace到初始态
g 切换是否显示60hz的网格线
一般操作 作用
h 切换是否显示详情
/ 搜索关键字
enter 显示搜索结果,可通过← →定位搜索结果
` 显示/隐藏脚本控制台
? 显示帮助功能

通过在View Options框中输入以下name,辅助m按键,我们可以快速定位到各事件发生时间与时长等信息。

名称 含义
AppLaunch_dispatchPtr:Up 点击桌面icon离开
PostFork Zoygate fork一个子进程
ActivityThreadMain Activity主线程入口
RuntimeInit 准备虚拟机资源
bindApplication 建立AMS与应用的binder通信,可以看到执行了很多子方法,包括打开应用的odex,资源等
activityStart handleLauncherActivity的时间,但这时界面还是不可见的



我们看到了“Wall duration”,代表着这一区块的开始到结束的耗时。之所以叫作“Wall duration”,是因为它就像是墙上的一个时钟,从线程的一开始就计时。但是,CPU Duration一项中显示了实际CPU在处理这一区块所消耗的时间。

标签:systrace,trace,Systrace,Alerts,线程,进程,android,优化,CPU
From: https://www.cnblogs.com/linhaostudy/p/18283391

相关文章

  • AI绘画·为电商图优化赋能AI虚拟模特电商图实战StableDiffusion电商图优化教程
    随着科技的不断发展,AI绘画技术逐渐在电商领域展现出其独特的优势。StableDiffusion作为一种先进的AI绘画技术,为电商图优化提供了强有力的支持。本教程将详细介绍如何利用StableDiffusion技术实现AI虚拟模特电商图的优化。StableDiffusion技术概述StableDiffusion是一种基......
  • 【鸿蒙性能优化】基于Camera Kit,获取相机流数据传递给native,进行压缩编码
    示例场景:ATS侧启动相机,使用摄像头采集视频流数据,获取相机视频流数据传递到native侧,通过buffer模式将视频编码成MP4文件保存到沙箱路径。方案描述:具体实现步骤可分为:Step1:申请权限,启动相机。Step2:启动录制,获取视频流数据,获取一帧图像转成JPG格式保存到沙箱路径。Step3:......
  • 不锈钢酸退作业区冷线氮氧分析仪采样系统优化改造
    不锈钢酸退作业区冷线氮氧分析仪采样系统优化改造一、项目提出前状况:(一)不锈钢酸退作业区酸洗线脱氮系统使用的废气监测仪器氮氧分析仪属于环保设备,数据检测的准确性直接影响环保指标,因此一旦数据检测有误,势必会引起环保事件。脱氮系统是将酸洗过程中产生的酸雾通过燃烧后,......
  • 基于GWO灰狼优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下(完整代码运行后无水印):     2.算法涉及理论知识概要       LDPC码是一种线性错误修正码,以其接近香农极限的优良性能而被广泛应用于现代通信系统中。NMS译码是一种基于最小平方误差准则的软判决译码方法,其目标是找到一......
  • 使用Charles实现Android抓包,附带Charles破解教程
    1.下载Charles网址:下载Charles安装完成后的界面:2.配置http抓包点击该选项可以看到代理的ip和端口号然后在手机的wifi中配置代理(手机和电脑要在同一局域网),代理选择手动,并填入ip和端口号电脑出现允许代理的提示,点击Allow即可到此处表示已经可以抓http的手机包......
  • CocosCreator客户端优化系列:CPU占用及性能优化
    CocosCreator客户端优化系列(四):CPU占用及性能优化转载请保留原文链接:https://blog.csdn.net/zzx023/article/details/88991314这篇文章是优化系列的最后一篇了,内容会长一些,更多的是提供一些方向以及思路,具体的一些细节由于篇幅有限,就不一一说明了,只要找对方向,就可以慢慢研究。希望......
  • web前端应用性能指标优化方案有哪些?
    接上一篇介绍前端性能指标的内容,本文主要总结下一般使用的指标优化方案加载相关:FCP优化:降低服务器响应时间:确保服务器能迅速响应请求,这样浏览器就能更快地开始处理并渲染页面内容。可以通过优化服务端代码、改善静态资源的提供方式(如将图片部署到CDN)来实现。延迟加载非关......
  • 探索Mojo语言的编译器优化:提升性能的秘诀
    ......
  • python操作哨兵、集群、缓存优化
    【python操作哨兵】11redis的主从,一主多从22高可用:sentinal:哨兵3多个哨兵:配置文件---》监控我们主从状态--》当发现主库--》故障转移43python如何操作哨兵567--------------------------------------------------------------------------------......
  • rk3128 android4.4找不到内部存储空间
    修改如下:device/rockchip/rk312xdiff--gita/fstab.rk30board.bootmode.emmcb/fstab.rk30board.bootmode.emmcindex4b04d83..276b77b100755---a/fstab.rk30board.bootmode.emmc+++b/fstab.rk30board.bootmode.emmc@@-8,10+8,10@@/dev/block/platform/1021c000.......