美文网首页
Perfetto 翻译-trace分析-PerfettoSQL

Perfetto 翻译-trace分析-PerfettoSQL

作者: David_zhou | 来源:发表于2023-10-31 12:55 被阅读0次

前言:虽然有翻译软件,虽然有chatgpt,毕竟语言隔阂,对这个工具还是一知半解,因此想通过翻译的方式和大家来一起学习下Perfetto这个强大的工具

目录

#####################以下分割线#####################
英文原文在这里

PerfettoSQL 语法

本页介绍了 PerfettoSQL 的语法,PerfettoSQL 是跟踪处理器和其他 Perfetto 分析工具中用于查询跟踪的一种 SQL 变体。 PerfettoSQL 是 使用SQLite 实现的一种SQL 变体。具体来说,任何在 SQLite 中有效的 SQL 在 PerfettoSQL 中也有效。 但仅靠SQLite语法是不够的,原因有两个:

1 相当基础,例如它不支持创建函数或宏 2 它不能用于访问仅在 Perfetto 工具中可用的功能,例如,它不能用于创建高效的分析表、从 PerfettoSQL 标准库导入模块等。

出于这个原因,PerfettoSQL 添加了新的语法片段,使编写 SQL 查询的体验更好。所有这些插件都包含关键字 PERFETTO ,以明确它们仅是 PerfettoSQL 的。

导入 PerfettoSQL 模块

INCLUDE PERFETTO MODULE 用于导入 PerfettoSQL 模块中定义的所有表/视图/函数/宏(例如,从 PerfettoSQL 标准库中)。 请注意,此语句的行为更类似于 C++ 中的 #include 语句,而不是 Java/Python 中import的语句。具体而言,模块中的所有对象在全局命名空间中都可用,而无需由模块名称限定。
例如:

-- Include all tables/views/functions from the android.startup.startups module
-- in the standard library.
INCLUDE PERFETTO MODULE android.startup.startups;

-- Use the android_startups table defined in the android.startup.startups
-- module.
SELECT *
FROM android_startups;
定义函数

CREATE PEFETTO FUNCTION 允许在 SQL 中定义函数。语法类似于 PostgreSQL 或 GoogleSQL 中的语法。
例如:

-- Create a scalar function with no arguments.
CREATE PERFETTO FUNCTION constant_fn() RETURNS INT AS SELECT 1;

-- Create a scalar function taking two arguments.
CREATE PERFETTO FUNCTION add(x INT, y INT) RETURNS INT AS SELECT $x + $y;

-- Create a table function with no arguments
CREATE PERFETTO FUNCTION constant_tab_fn()
RETURNS TABLE(ts LONG, dur LONG) AS
SELECT column1 as ts, column2 as dur
FROM (
  VALUES
  (100, 10),
  (200, 20)
);

-- Create a table function with one argument
CREATE PERFETTO FUNCTION sched_by_utid(utid INT)
RETURNS TABLE(ts LONG, dur LONG, utid INT) AS
SELECT ts, dur, utid
FROM sched
WHERE utid = $utid;
创建高效的表

CREATE PERFETTO TABLE 允许定义针对跟踪分析查询优化的表。这些表比使用 CREATE TABLE 创建的 SQLite 表性能更高、内存效率更高。

Note however the full feature set of CREATE TABLE is not supported:
但请注意, CREATE TABLE 功能集并不完全支持:

  1. Perfetto 表在创建后无法插入并且是只读的
  2. Perfetto 表必须使用 SELECT 语句进行定义和填充。它们不能由列名和类型定义。

例如:

-- Create a Perfetto table with constant values.
CREATE PERFETTO TABLE constant_table AS
SELECT column1 as ts, column2 as dur
FROM (
  VALUES
  (100, 10),
  (200, 20)
);

-- Create a Perfetto table with a query on another table.
CREATE PERFETTO TABLE slice_sub_table AS
SELECT *
FROM slice
WHERE name = 'foo';

#####################以上分割线#####################

后记:
1 本次主要使用百度翻译,虽然被骂,但至少翻译这个工具降低了门槛。
2 英文文档中的长难句真的是又长又难,基于百度的翻译,然后自己再调整下,水平实在有限。
3 技术背景知识不够,有些专有名词不知道怎么翻译,也不知道百度翻译的是否准确,功夫在诗外。
4 万事开头难,中间难不难,还不知道。中间的事后面再说,正确一天翻译一篇。
5 虽然可能会有人不屑,但总要有人去做不起眼的小事。
6 google 厉害,这个perfetto 工具也很厉害。君子善假于物也。
7 工具的使用是最简单的入门,背后还有更多的东西值得学习。
8 水平实在有限,闻过则喜,希望有更多的人反馈,期待更好的建议

相关文章

  • Perfetto工具用法

    一、抓取trace Perfetto配置 Perfetto在Android 9以上默认预制,但没有开启开启方法: ...

  • Perfetto工具使用简介

    简介 Perfetto工具是Android下一代全新的统一的trace收集和分析框架,可以抓取平台和app的tra...

  • 性能深度分析之System Trace

    性能深度分析之System Trace性能深度分析之System Trace

  • MYSQL 8 優化之04 (通过trace分析)

    1.打开trace & 设置格式为json,并设置trace的最大能够使用内存大小 trace 分析

  • 预览卡顿丢帧的问题

    通过perfetto分析预览丢帧或者预览卡顿的问题。 看cameraservice进程,找到 frame capt...

  • 微信小程序性能测试之Trace工具

    一、Trace工具介绍 微信小程序开发工具中提供了trace工具,利用trace工具可时时监控小程序的性能。分析t...

  • TraceView

    使用代码生成.trace文件,分析代码执行时间通过Debug class 检测代码生成logs保存到.trace文...

  • ANR分析

    ANR日志分析 获取日志 trace文件解析 trace文件例子 关注主线程调用栈,断点调试若干次就可搞定了。 基...

  • go 的性能分析工具 trace

    trace 这个工具跟踪采集一段时间的信息,然后 dump 成文件,最后调用 go tool trace 分析 d...

  • 【java】java 线程在线分析工具

    jstack(查看线程)、jmap(查看内存)和jstat(性能分析) jstack - Stack Trace ...

网友评论

      本文标题:Perfetto 翻译-trace分析-PerfettoSQL

      本文链接:https://www.haomeiwen.com/subject/cpwiidtx.html