• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1INCLUDE PERFETTO MODULE ext.loading_interesting_intervals;
2
3DROP VIEW IF EXISTS resource_metric;
4
5CREATE VIEW resource_metric
6AS
7WITH
8  request AS (
9    SELECT
10      EXTRACT_ARG(arg_set_id, 'debug.data.requestId') AS id,
11      EXTRACT_ARG(arg_set_id, 'debug.data.url') AS url,
12      ts
13    FROM slice
14    WHERE name = 'ResourceSendRequest'
15  ),
16  response AS (
17    SELECT
18      EXTRACT_ARG(arg_set_id, 'debug.data.requestId') AS id,
19      EXTRACT_ARG(arg_set_id, 'debug.data.mimeType') AS mime,
20      ts
21    FROM slice
22    WHERE name = 'ResourceReceiveResponse'
23  ),
24  finish AS (
25    SELECT
26      EXTRACT_ARG(arg_set_id, 'debug.data.requestId') AS id,
27      EXTRACT_ARG(arg_set_id, 'debug.data.decodedBodyLength') AS len,
28      EXTRACT_ARG(arg_set_id, 'debug.data.encodedDataLength') AS data_len,
29      ts
30    FROM slice
31    WHERE name = 'ResourceFinish'
32  ),
33  resource AS (
34    SELECT
35      request.ts,
36      finish.ts - request.ts AS dur,
37      finish.ts - response.ts AS download_dur,
38      len,
39      CASE
40        WHEN url LIKE "data:%" THEN length(url)
41        ELSE data_len
42      END AS data_len,
43      mime,
44      CASE
45        WHEN mime LIKE '%css%' THEN 'css'
46        WHEN mime LIKE '%htm%' THEN 'html'
47        WHEN mime LIKE '%html%' THEN 'html'
48        WHEN mime LIKE '%json%' THEN 'json'
49        WHEN mime LIKE '%font%' THEN 'font'
50        WHEN mime LIKE '%audio%' THEN 'audio'
51        WHEN mime LIKE '%video%' THEN 'video'
52        WHEN mime LIKE '%image%' THEN 'image'
53        WHEN mime LIKE 'application/wasm' THEN 'javascript'
54        WHEN mime LIKE '%javascript%' THEN 'javascript'
55        WHEN mime LIKE '%ecmascript%' THEN 'javascript'
56        WHEN mime LIKE '%xml%' THEN 'xml'
57        ELSE 'other'
58      END AS mime_category,
59      CASE
60        WHEN length(url) > 100 THEN SUBSTR(url, 1, 90) || '<TRUNCATED>'
61        ELSE url
62      END AS url
63    FROM request, response
64    USING (id),
65    finish USING (id)
66  )
67SELECT interval_id, resource.*, resource.ts - navigation_start_ts AS nav_rel_ts
68FROM resource, interesting_interval
69ON resource.ts BETWEEN interesting_interval.ts AND interesting_interval.end - 1;
70
71SELECT * FROM resource_metric;
72