Android性能分析工具的比较

 背景介绍

Systrace、Perfetto和Android Benchmarking Framework都是用于性能分析和优化的工具,但它们各自的用途、功能范围和适用场景有所不同。以下对它们进行详细的比较。

通常一次较完整的性能分析过程需要多工具的配合使用,往复迭代:

1. 快速诊断性能问题

使用Systrace或Perfetto查看系统级问题,确认大致瓶颈位置。

2. 详细分析和优化

使用Perfetto捕获细粒度数据,深入分析性能问题。

3. 对比代码优化效果

使用Android Benchmarking Framework进行具体方法或模块的基准测试和优化。

工具概述

工具主要用途适用场景
Systrace捕获系统级性能数据(如 CPU 调度、线程行为、帧渲染),用于快速诊断性能瓶颈。分析 UI 卡顿、掉帧、线程调度问题,适合基础性能分析和旧版 Android(4.1+)。
Perfetto现代化的性能分析工具,提供更精细的数据捕获(如内存分配、磁盘 I/O、GPU 调度),覆盖 Systrace 的所有功能并扩展。深度分析复杂性能问题,支持跨平台分析和现代 Android(10+)设备上的详细性能监控。
Android Benchmarking Framework提供标准化的基准测试工具,用于测量应用的具体性能(如方法耗时、帧率),帮助开发者了解代码优化效果。测量应用的运行性能和特定功能的耗时,特别是需要比较不同代码实现的性能表现时。

功能对比

功能领域SystracePerfetto  Android
Benchmarking
Framework
系统事件捕获捕获线程调用、CPU使用、帧渲染事件等高层次系统行为。更细粒度的捕获,包括内存分配、磁盘I/O和用户自定义事件。不支持系统级事件,专注于应用代码的性能。
帧率和掉帧分析支持基础的UI掉帧分析,显示VSYNC和帧渲染流程。提供更详细的帧渲染和GPU调度信息,适合优化复杂的UI或动画。不能直接分析帧率和掉帧,但可以通过微基准测试间接测量相关耗时。
内存和I/O分析不支持内存分配或I/O行为分析。支持捕获详细的内存分配、GC事件、磁盘I/O活动。无法捕获内存和I/O数据,专注于特定功能的性能表现。
CPU调度分析提供线程调度的时间线和CPU使用情况。支持高频率CPU数据采样和线程优先级分析。无法直接分析线程或CPU调度,需要通过测试代码来测量特定任务的执行耗时。
用户自定义事件不支持用户定义事件。支持开发者通过代码插入自定义事件(trace_event API)。通过自定义基准测试测量特定操作的性能,但不支持全局自定义事件。
测试结果呈现生成HTML文件,适合快速浏览性能数据。生成.perfetto-trace文件,可在Perfetto UI中加载,适合处理复杂、大量的数据。测试结果以日志或报告形式呈现,专注于性能指标的数值对比。

数据采集粒度

维度SystracePerfettoAndroid
Benchmarking
Framework
细粒度捕获粗粒度采样,适合快速查看大体性能趋势。支持微秒级采样,适合捕获精确的性能瓶颈。不支持采样,专注于代码级别的性能测试。
跨应用/系统分析可捕获多应用或系统范围的性能数据,但深度有限。覆盖全系统范围,适合分析多任务场景和资源竞争问题。仅针对特定应用,不适合分析系统或多任务性能。
性能深度主要关注线程、CPU、UI渲染等核心领域。提供全方位数据,包括GPU、内存、网络、磁盘I/O等多种领域。专注于函数级别的性能数据,如方法耗时、内存分配量等。

使用难易程度

特性SystracePerfettoAndroid
Benchmarking
Framework
易用性简单易用,生成HTML文件,直接可读。配置复杂,需使用JSON配置或Perfetto CLI,适合高级用户。易用,专为开发者设计,集成到Jetpack Benchmark或Android Studio中。
学习曲线入门简单,适合快速分析常见问题。学习曲线较高,需要熟练性能跟踪配置和工具使用。学习曲线低,专注于代码优化,无需深入了解系统级原理。

适用场景对比

场景SystracePerfettoAndroid
Benchmarking
Framework
快速诊断常见问题非常适合,如UI卡顿、线程阻塞等。适合,但通常用于深度分析,配置可能过于复杂。不适合快速诊断系统级问题,更关注代码性能指标。
深度性能分析支持有限,无法捕获更复杂行为(如内存分配、磁盘I/O)。非常适合,支持全方位的性能数据捕获和详细分析。不适合系统范围分析,但可以帮助优化具体代码实现。
基准测试和优化不适合测试代码的具体性能。支持性能事件时间线分析,但无法直接测量基准性能。非常合适,用于比较不同代码实现的性能,并生成可靠的基准测试报告。
多任务场景分析支持有线,适合简单的多任务性能问题分析。非常适合,支持复杂任务之间的性能交互分析。不支持多任务分析,仅关注单应用的性能表现。
历史兼容性兼容Android4.1+,适合旧设备性能分析。主要支持Android10+,适合现代设备和跨平台分析。适合现代Android开发环境(Jetpack和Android Studio)。

如何选择

这里按自己理解整理的选择,不一定正确,欢迎指正交流。

工具适用人群最佳场景
Systrace初学者或需要快速定位常见性能问题的开发者快速分析UI掉帧、线程调度问题,适合旧版Android和简单性能问题的诊断。
Perfetto需要深度性能分析和跨平台性能调优的高级用户。分析复杂性能瓶颈(如内存分配、磁盘I/O、GPU调度),适合现代Android设备和多任务场景。
Android Benchmarking Framework需要测试代码性能、优化算法或实现对比的开发者。测量方法耗时、内存分配和帧率的基准测试,适合评估和比较不同代码实现的性能表现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jupyter在运行上出现错误:ModuleNotFoundError: No module named ‘wordcloud‘

问题分析:显示Jupyter未安装这个模板 解决办法:在单元格内输入:!pip install wordcloud

大模型WebUI:Gradio全解系列8——Additional Features:补充特性(下)

大模型WebUI:Gradio全解系列8——Additional Features:补充特性(下) 前言本篇摘要8. Additional Features:补充特性8.5 嵌入托管 Spaces8.5.1 使用 Web Components 嵌入1. 嵌入步骤2. 定义嵌入的外观和行为 8.5.2 使用…

持续学习入门

参考视频(一) 【学无止境:深度连续学习】 背景 更新新的数据时,数据异步输入,会有灾难性遗忘 现有解决策略 (1)引入正则约束(2)设计合适的动态模型架构 &#xff…

【Cocos TypeScript 零基础 2.1】

目录 cocos常识新建动画添加组件 cocos 下载就不讲了,多的很 cocos 界面设置中文 新建一个2D项目 SIKI_学院_点击跳转 常识 竖屏 宽720 高1280 如果背景图确定是竖屏也可以根据背景图片大小来确定项目宽高 鼠标功能 左键 选中 滚轮 放大缩小 右键 移动视角位置 场景 双击…

局域网中单台交换机VLAN应用

网络拓扑 其中交换机接口类型都为access接口。 Ethernet 0/0/1 VLAN ID为10 Ethernet 0/0/2 VLAN ID为10 Ethernet 0/0/5 VLAN ID为20 Ethernet 0/0/6 VLAN ID为20 Host-1 ip为192.168.64.11/24 Host-2 ip为192.168.64.12/24 Host-3 ip为192.168.64.21/24 Host-4 ip为192.168…

Harbor仓库部署安装、向仓库推送,拉取镜像、容器的基础使用(超级详细,非常透彻)

Harbor 环境搭建笔记 作为新手,在搭建 Harbor 环境的过程中,我参考了大量资料,学到了很多宝贵的知识,但也遇到了不少挑战。虽然目前这套环境仅在测试环境中成功运行,但仍有许多细节需要完善。记录这些经验不仅有助于个…

活动预告 |【Part2】 Azure 在线技术公开课:迁移和保护 Windows Server 和 SQL Server 工作负载

课程介绍 通过 Microsoft Learn 免费参加 Microsoft Azure 在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft 云技术的了解。参加我们举办的“迁移和保护 Windows Server 和 SQL Server 工作负载”活动,了解 Azure 如何为将工作负载…

PP模块部分BAPI函数

工艺路线 BAPI_ROUTING_CREATE 创建工艺路线 BAPI_ROUTING_EXISTENCE_CHECK 检查工艺路线是否存在 参考操作集 BAPI_REFSETOFOPERATIONS_CREATE 创建参考操作集 BAPI_REFSETOFOPR_EXISTENCE_CHK 检查参考操作集是否存在 计划订单 BAPI_PLANNEDORDER_CREATE 创建计划订单 BAPI…

nature reviews genetics | 需要更多的针对不同种族的癌症基因组图谱研究,促进精准治疗和维护治疗公平权益

–https://doi.org/10.1038/s41576-024-00796-w Genomic landscape of cancer in racially and ethnically diverse populations 研究团队和单位 Ulrike Peters–Public Health Sciences Division, Fred Hutchinson Cancer Center Claire E. Thomas–Public Health Scienc…

两个等号和三个等号(待查资料)

1太癫了,居然时要才行,都不行 2. 三等号的结果 .。。。。毁灭吧

SpringCloud源码分析-Gateway

Gateway核心原理,请求经过一系列的责任链最后到达服务端。

大模型—Ollama将Python函数作为参数传递,增强函数调用功能

Ollama将Python函数作为参数传递,增强函数调用功能 在最新版本的Ollama Python库中,现在可以将函数作为工具提供。该库现在也全面支持类型提示,并添加了新的例子。 开始使用 首先安装或升级Ollama Python库: pip install -U ollama将Python函数作为工具传递 定义一个Py…

智能商业分析 Quick BI

Quick BI 是阿里云提供的一款智能商业分析(BI)工具,旨在帮助企业快速获取业务洞察、优化决策过程、提升数据分析效率。通过强大的数据可视化和分析功能,Quick BI 能够帮助用户轻松连接多种数据源、创建多维度的报表和仪表盘&#…

折旧后将成本中心折旧费调整到订单中

背景:设备原作为通用设备,按成本中心折旧,在12月月结正常折旧后才明确为专用设备,需要按内部订单折旧。 问:折旧能不能冲销。 回复: 在SAP中,折旧凭证是无法直接冲销的。如果折旧计提有误&#…

开源的Vue低代码表单设计器 form-create-designer v3.2.9 版本发布,新增10多种功能

form-create-designer 是一款开源的低代码表单设计器,通过数据驱动表单渲染。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。并广泛应用于在政务系统、OA系统、ERP系统、电商系统、流程管理等领域。 项目采…

Qt之简易音视频播放器设计(十五)

Qt开发 系列文章 - MediaPlayer(十五) 目录 前言 一、QMediaPlayer 二、实现方式 1.添加multimedia 2.创建类vedioplayer 3.UI设计 4.用户使用 5.效果演示 总结 前言 利用Qt进行音视频播放器设计,首先比较方便使用的是Qt自带的音视…

OpenCV-Python实战(13)——图像轮廓

一、找轮廓 cv2.findContours() contours,hierarchy cv2.findContours(image*,mode*,method*) contours:找到的所有轮廓数组,数组内的元素为轮廓像素点坐标。 hierarchy:轮廓间的层次关系。 image:二值图像(cv2.t…

UVM:testbench architecture

uvm介绍 验证计划 验证平台 uvm phase uvm 仿真实例 uvm消息机制 父类和子类 uvm elements uvm component uvm message Uvm_info中小于verbosity数值的信息打印出来。

框架(Mybatis配置日志)

mybatis配置日志输出 先导入日志依赖 <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency> 编写log4j.properties配置文件 # Root logger option log4j.rootLogge…

期权懂|期权都有哪些存在的风险因素?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 期权都有哪些存在的风险因素&#xff1f; 一、市场价格波动风险 期权的价格受到多种因素的影响&#xff0c;包括标的资产价格、市场利率、波动率等。 这些因素的变化可能导致期…