性能分析工具 之 Perfetto中SQL语句

        在 Perfetto 中内建SQLite,通过SQL查询可以分析 trace 的各个部分的性能,将数据统一汇总在一起进行对比分析,非常便捷方便。

        本文基于 Perfetto 中的常用SQL语句进行讲解,不深入SQL语言本身。

更多技术文章,全网首发公众号 “极客之昂” 锁定 -上午11点 - ,感谢大家关注、转发、点赞!

1.UI 展示

        在Perfetto 的可视化展示网页:Perfetto UI  中导入抓取好的trace文件,加载完毕后在侧边栏中 Query (SQL) ,这个位置就是Perfetto 提供的SQL查询的入口。

        点击Query (SQL) 后,可以看到两个部分,上面的部分就是SQL语句的编辑区,输入查询语句后以 Ctrl + Enter 结束。

        在下面的部分中,在未输入语句之前会显示这个trace之前的查询SQL语句历史,当新的SQL语句以Ctrl + Enter 完成输入后,这个部分就会显示查询结果。

        在这个部分我们可以演示一个简单的查询方法。

        例如,在trace中查询slice上的每个事件的发生时间和时长。

 select dur,ts,name from slice

//ts: 展示timestamp 时间戳

//dur: 表示需要询问的事件的时长

//name: 表示查询的对象名

//slice: 表示 trace 上一段时间的事件集合

2.SQL基本用法

2.1 条件查找常用语法

       在perfetto中使用最多的是条件查询SQL,运行的顺序是:①from语句 ②where语句 ③select语句。

select <列名1>,<列名2>,<列名3>,...

from <表名>

where 条件

        为列名设置别名 — as,将表table1中name列名修改为“名称”

select name as '名称'

from table1

         可以在select选择语句中进行算数计算,例如将dur列下的时间变成秒为单位(将微米除以10的6次)。

select (dur/1e6),ts,name from slice

        在where条件语句中支持字符串模糊查找,使用关键字:LIKE

        _表示任意一个字符;%表示任意字符串。例如,查找名字大概是doTraversals的线程耗时。

        注:使用like查找时,尽量在字符串前后都加 % ,如果在某个位置不加%,会默认该位置是精确查找,可能造成查找失败。

select (dur/1e6) from slice where name like "%doTraversals%" 

2.2 示意用例

        使用场景:在trace中查找HAL拍照的耗时,并获取平均时间。

select (dur/1e6) from slice where name like "%still%" order by dur desc

         通过 %still% 模糊查找到 still capture这个线程的耗时,并且使用order by dur desc 进行降序排列。但是需要获取平均时间,可以在select语句中使用算数计算,使用关键字 avg 即可。

select avg(dur/1e6) from slice where name like "%still%" order by dur desc

         以上就可以实现需要的查找的结果。

3.总结

        在 Perfetto中使用SQL查询语句,可以高效的获取整个trace中所需的数据,提高性能分析的效率。并且通过SQL语句与python语句结合,通过加载trace,可以实现自动化分析某个固定场景下的性能情况,通过perfetto、SQL、python结合可以实现自动化分析性能场景,大大提高技术人员的效率,减少不必要的重复分析工作。

更多技术文章,全网首发公众号 “极客之昂” 锁定 -上午11点 - ,感谢大家关注、转发、点赞!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客之昂-钛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值