安卓性能测试+结果可视化

news2024/11/26 18:19:43

使用到的技术:mobileperf+pyecharts或mobileperf+grafana

性能测试

GitHub - alibaba/mobileperf: Android performance testAndroid performance test. Contribute to alibaba/mobileperf development by creating an account on GitHub.https://github.com/alibaba/mobileperf

 使用方法:

  • 安装python3,加入到环境变量中,执行python --version,确保是python3
  • 安装adb,确保adb devices能找到设备
  • 修改配置文件,示例参考根目录下config.conf
  • 运行,mac、linux 在mobileperf工具根目录下执行sh run.sh,windows 双击run.bat,结束测试,等待设置测试时长到或按Ctrl+C

config文件主要改包名和设备udid

 测试结果,包含cpu,fps,内存mem,流量traffic 等csv文件

 结果可视化

grafana

grafana的安装、使用大家自行学习,这里主要讲pyecharts

 pyecharts

安装:pip install pyecharts

实际中一次cpu测试结果如下

 现在用pyecharts处理,注释注明了每一步的意思,可以对着看

import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Line
import os


class csv_to_chart(object):
    def __init__(self):
        self.cpu_file_name = './cpuinfo.csv'
        self.fps_file_name = './fps.csv'
        self.mem_file_name = './meminfo.csv'
        self.traffic_file_name = './traffic.csv'

    def func(self, val):
        tmp = float(val) / 100
        tmp = "{:.2f}".format(tmp)
        return str(tmp)

    def cpu_csv_to_line(self):
        # 读取CSV文件
        db = pd.read_csv(self.cpu_file_name)
        # 获取列名,转为列表
        tmp = db.columns.tolist()
        tmp_list = []
        # 列名system,特殊符号%,\n不能入库
        for a in tmp:
            if '\n' in a:
                tmp_list.append(a[:-2])
            elif 'system' in a:
                tmp_list.append('sys')
            elif '%' in a:
                tmp_list.append(a[:-1])
            else:
                tmp_list.append(a)
        db.columns = tmp_list

        # 将pid_cpu这一列除以100,因为是百分比
        db.pid_cpu = db.apply(lambda x: self.func(x.pid_cpu), axis=1)

        yk = (
            Line()
                .add_xaxis(db.datetime.tolist())

                .add_yaxis(series_name="cpu百分比",
                           y_axis=db.pid_cpu.tolist(),
                           # 跳过值是0的点
                           is_connect_nones=True,
                           # 曲线光滑
                           is_smooth=True,
                           markpoint_opts=opts.MarkPointOpts(
                               data=[
                                   opts.MarkPointItem(type_="max", name="最大值"),
                                   opts.MarkPointItem(type_="min", name="最小值"),
                               ]
                           ),
                           markline_opts=opts.MarkLineOpts(
                               data=[opts.MarkLineItem(type_="average", name="平均值")]
                           ), )

                .set_global_opts(title_opts=opts.TitleOpts(title="cpu占用详情"),
                                 tooltip_opts=opts.TooltipOpts(trigger="axis"))

                .render("html/cpu.html")
        )



if __name__ == '__main__':
    tmp = os.path.join(os.path.dirname(__file__), "html")
    if not os.path.exists(tmp):
        os.mkdir(tmp)
    csv_to_chart().cpu_csv_to_line()

目前问题

  • 真机,没有fps数据
  • 模拟器,没有流量数据

效果

  • 折线图
  • 最大值
  • 最小值
  • 均值
  • 竖线提示
  • 跳过空值

脚本放在统计结果路径,运行会在html文件夹生成对应的html

真机结果

模拟器结果

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

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

相关文章

Linux: ARM GIC仅中断CPU 0问题分析

文章目录1. 前言2. 分析背景3. 问题4. 分析4.1 ARM GIC 中断芯片简介4.1.1 中断类型和分布4.1.2 拓扑结构4.2 问题根因4.2.1 设置GIC SPI中断的CPU亲和性4.2.2 GIC初始化:缺省的CPU亲和性4.2.2.1 boot CPU亲和性初始化流程4.2.2.1 其它非 boot CPU亲和性初始化流程5…

KT404C语音芯片串口发数据没反应或者报错的处理总结

一、问题简介 KT404C我焊接到PCB板上面,直接使用串口调试助手发指令没有任何返回,请问是什么意思呢? 很确定,串口也没连错,使用的是CH340G的USB转TTL ,【TX连接KT404C的7脚RX】 【RX连接KT404C的8脚TX】 二…

Python常用标准库-os库一文详解(二):文件操作和路径操作

目录 前言 文件操作 一、读写文件 1.读文件 2.写文件 二、创建文件 三、删除文件 四、重命名文件 五、文件判断 路径操作 1.拼接 2. 分离路径 3.获取路径中的文件名 4.获取路径中的路径名 5.获取绝对路径 6.分离文件拓展名 点关注,防走丢&#xff…

CEC2020:能量谷优化算法(Energy valley optimizer,EVO)求解CEC2020(提供MATLAB代码)

一、能量谷优化算法 能量谷优化算法(Energy valley optimizer,EVO)是MahdiAzizi等人于2023年提出的一种新颖的元启发式算法,其灵感来自关于稳定性和不同粒子衰变模式的物理原理。 物理反应是指两个粒子或外部亚原子粒子碰撞产生新…

【matplotlib】可视化解决方案——如何向画布添加交叉直线

概述 在 matplotlib 中,如果想要在画布上添加一组横纵较差的直线,需要使用到 Cursor 类,该类实现了图形化界面中任何位置的数值定位可视化某种意义上来讲,这种横纵交叉线类似数值放大镜,可以清楚地显示任何位置的坐标…

以图搜图服务快速搭建

以图搜图服务快速搭建 电商公司,管理的商品少则几千,多则上百万。如何帮助用户从多如牛毛的商品中找到类似的商品就成了问题。 以图搜图就可以很好的帮助解决这个问题,通过 Towhee(resnet50 模型) Milvus 如何实现本…

Linux常用命令——lsusb命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) lsusb 显示本机的USB设备列表信息 补充说明 lsusb命令用于显示本机的USB设备列表,以及USB设备的详细信息。 lsusb命令是一个学习USB驱动开发,认识USB设备的助手,推荐大家使用…

深信服面经---云计算方向(附问题知识点解析)

深信服面经---云计算高级开发一、一面问题概览二、实操相关三、复盘对问题答案进行整理(查漏补缺)3.1、go语言简单了解3.2、项目中成就感最大或挑战最大的地方3.3、项目问题---协议头引入之后,包的大小增加了多少3.4、如何建立缓存3.5、cache…

STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…

“一键转换图片:学习如何使用Python调整大小、增强和转换图片!“

目录 简介: 源代码: 代码说明: 效果如图所示: 有关其中用到的Pillow模块: 简介: 在这个世界上,图片处理已经成为了必须掌握的技能之一,无论是为了更好地展示产品,还是…

C++ Primer Plus 第6版 读书笔记(4) 第4章 复合类型

目录 4.1 数组 4.2 字符串 4.3 string 类简介 4.3.4 string 类 I/O 4.4结构简介 4.5 共用体 4.6 枚举 4.7 指针和自由存储空间 4.8 指针、数组和指针算术 4.8.1 程序说明 4.8.2指针小结 4.8.5 自动存储、静态存储和动态存储 4.9 类型组合 4.10 数组的替代…

[算法与数据结构]--贪心算法初识

贪心算法贪心算法的解题过程贪心算法案例1.选择排序2. 平衡字符串3. 买卖股票的最佳时机 II4. 跳跃游戏5 钱币找零6 多机调度问题7.活动选择8. 最多可以参加的会议数目9. 无重叠区间来自算法导论对于这个贪心算法的解释定义贪心算法(又名贪婪算法)故名思意就是一个“贪心”的算…

小程序开发(一)新建/拉取项目,配置远程仓库

一、前期准备工作及工具 1、工具 微信开发者工具、Git 2、准备工作 相关开发工具的安装和配置工作请自行百度 二、新建或拉取远程项目 1、打开微信开发者工具(扫码登录等验证工作自行操作),选择小程序。 2、点击号新建项目,项目名称、目录、模板选…

Git(狂神课堂笔记)

1.首先去git官网下载我们对应的版本Git - Downloading Package (git-scm.com) 2.安装后我们会发现git文件夹里有三个应用程序: Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多 Git CMD:Windows风格的命令行 G…

kafka入门到实战三(单线程实现顺序消费,含demo)

这里需要前面两章的基础,如果没有环境或者看不懂在说什么,就翻一翻前两章。 kafka顺序消费(单线程) 顺序消费 顺序消费:是指消息的产生顺序和消费顺序相同。不管你用的是什么q或者kafka还是sofa,顺序依赖…

启动框架 Anchors接入和分析

参考:https://juejin.cn/post/6844904128443858958https://blog.csdn.net/gqg_guan/article/details/127760207从哪下手整个冷启动过程中,系统方法我们无法进行优化,主要需要优化的是系统暴露出来的一些生命周期方法,从Application的attachBa…

OSCP学习踩过的坑

OSCP终于拿到证,感觉参加考试备考的日子才过去没有多久,想起了那几个月被“虐待”的日子,我想总结下在课程和考试中的犯的错误! 计划 我制定了一个学习计划,计划是学习、练习,然后再学习、练习一些&#…

SpringCloud:服务拆分及远程调用

目录 SpringCloud:服务拆分及远程调用 1、服务拆分 2、远程调用 SpringCloud:服务拆分及远程调用 SpringCloud是目前国内使用最广泛的微服务框架。 官网地址: Spring Cloud SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了…

【10】SCI易中期刊推荐——工程技术-计算机:人工智能(中科院2区)

🚀🚀🚀NEW!!!SCI易中期刊推荐栏目来啦 ~ 📚🍀 SCI即《科学引文索引》(Science Citation Index, SCI),是1961年由美国科学信息研究所(Institute for Scientific Information, ISI)创办的文献检索工具,创始人是美国著名情报专家尤金加菲尔德(Eugene Garfield…

JAVA开发(Eureka基本原理)

Eureka基本原理。 通过上图我们可以看出,服务提供者在启动的时候需要向注册中心注册自己的信息,而注册中心把向自己注册的服务提供者都保存下来,以便服务消费者获取用来发起请求,而服务消费者需要从注册中心获取服务提供者列表&am…