CREATE PERFETTO VIEW _chrome_speedometer_3_measure_name (
name STRING,
suite_name STRING,
test_name STRING,
measure_type STRING
) AS
WITH
data(suite_name, test_name) AS (
SELECT
*
FROM (VALUES
('TodoMVC-JavaScript-ES5', 'Adding100Items'),
('TodoMVC-JavaScript-ES5', 'CompletingAllItems'),
('TodoMVC-JavaScript-ES5', 'DeletingAllItems'),
('TodoMVC-JavaScript-ES6-Webpack-Complex-DOM', 'Adding100Items'),
('TodoMVC-JavaScript-ES6-Webpack-Complex-DOM', 'CompletingAllItems'),
('TodoMVC-JavaScript-ES6-Webpack-Complex-DOM', 'DeletingAllItems'),
('TodoMVC-WebComponents', 'Adding100Items'),
('TodoMVC-WebComponents', 'CompletingAllItems'),
('TodoMVC-WebComponents', 'DeletingAllItems'),
('TodoMVC-React-Complex-DOM', 'Adding100Items'),
('TodoMVC-React-Complex-DOM', 'CompletingAllItems'),
('TodoMVC-React-Complex-DOM', 'DeletingAllItems'),
('TodoMVC-React-Redux', 'Adding100Items'),
('TodoMVC-React-Redux', 'CompletingAllItems'),
('TodoMVC-React-Redux', 'DeletingAllItems'),
('TodoMVC-Backbone', 'Adding100Items'),
('TodoMVC-Backbone', 'CompletingAllItems'),
('TodoMVC-Backbone', 'DeletingAllItems'),
('TodoMVC-Angular-Complex-DOM', 'Adding100Items'),
('TodoMVC-Angular-Complex-DOM', 'CompletingAllItems'),
('TodoMVC-Angular-Complex-DOM', 'DeletingAllItems'),
('TodoMVC-Vue', 'Adding100Items'),
('TodoMVC-Vue', 'CompletingAllItems'),
('TodoMVC-Vue', 'DeletingAllItems'),
('TodoMVC-jQuery', 'Adding100Items'),
('TodoMVC-jQuery', 'CompletingAllItems'),
('TodoMVC-jQuery', 'DeletingAllItems'),
('TodoMVC-Preact-Complex-DOM', 'Adding100Items'),
('TodoMVC-Preact-Complex-DOM', 'CompletingAllItems'),
('TodoMVC-Preact-Complex-DOM', 'DeletingAllItems'),
('TodoMVC-Svelte-Complex-DOM', 'Adding100Items'),
('TodoMVC-Svelte-Complex-DOM', 'CompletingAllItems'),
('TodoMVC-Svelte-Complex-DOM', 'DeletingAllItems'),
('TodoMVC-Lit-Complex-DOM', 'Adding100Items'),
('TodoMVC-Lit-Complex-DOM', 'CompletingAllItems'),
('TodoMVC-Lit-Complex-DOM', 'DeletingAllItems'),
('NewsSite-Next', 'NavigateToUS'),
('NewsSite-Next', 'NavigateToWorld'),
('NewsSite-Next', 'NavigateToPolitics'),
('NewsSite-Nuxt', 'NavigateToUS'),
('NewsSite-Nuxt', 'NavigateToWorld'),
('NewsSite-Nuxt', 'NavigateToPolitics'),
('Editor-CodeMirror', 'Long'),
('Editor-CodeMirror', 'Highlight'),
('Editor-TipTap', 'Long'),
('Editor-TipTap', 'Highlight'),
('Charts-observable-plot', 'Stacked by 6'),
('Charts-observable-plot', 'Stacked by 20'),
('Charts-observable-plot', 'Dotted'),
('Charts-chartjs', 'Draw scatter'),
('Charts-chartjs', 'Show tooltip'),
('Charts-chartjs', 'Draw opaque scatter'),
('React-Stockcharts-SVG', 'Render'),
('React-Stockcharts-SVG', 'PanTheChart'),
('React-Stockcharts-SVG', 'ZoomTheChart'),
('Perf-Dashboard', 'Render'),
('Perf-Dashboard', 'SelectingPoints'),
('Perf-Dashboard', 'SelectingRange')) AS _values
),
measure_type(measure_type) AS (
SELECT
*
FROM (VALUES
('sync'),
('async')) AS _values
)
SELECT
suite_name || '.' || test_name || '-' || measure_type AS name,
suite_name,
test_name,
measure_type
FROM data, measure_type;
CREATE PERFETTO VIEW _chrome_speedometer_3_iteration_slice AS
WITH
data AS (
SELECT
*,
substr(name, 1 + length('iteration-')) AS iteration_str
FROM slice
WHERE
category = 'blink.user_timing' AND name GLOB 'iteration-*'
)
SELECT
*,
cast_int!(iteration_str) AS iteration
FROM data
WHERE
iteration_str = iteration;
CREATE PERFETTO TABLE chrome_speedometer_3_measure (
ts TIMESTAMP,
dur DURATION,
name STRING,
iteration LONG,
suite_name STRING,
test_name STRING,
measure_type STRING
) AS
WITH
measure_slice AS (
SELECT
s.ts,
s.dur,
s.name,
m.suite_name,
m.test_name,
m.measure_type
FROM slice AS s
JOIN _chrome_speedometer_3_measure_name AS m
USING (name)
WHERE
s.category = 'blink.user_timing'
)
SELECT
s.ts,
s.dur,
s.name,
i.iteration,
s.suite_name,
s.test_name,
s.measure_type
FROM measure_slice AS s
JOIN _chrome_speedometer_3_iteration_slice AS i
ON (
s.ts >= i.ts AND s.ts < i.ts + i.dur
)
ORDER BY
s.ts ASC;
CREATE PERFETTO TABLE chrome_speedometer_3_iteration (
ts TIMESTAMP,
dur DURATION,
name STRING,
iteration LONG,
geomean DOUBLE,
score DOUBLE
) AS
WITH
suite AS (
SELECT
iteration,
suite_name,
sum(dur / (
1000.0 * 1000.0
)) AS suite_total
FROM chrome_speedometer_3_measure
GROUP BY
iteration,
suite_name
),
iteration AS (
SELECT
iteration,
exp(avg(ln(suite_total))) AS geomean
FROM suite
GROUP BY
iteration
)
SELECT
s.ts,
s.dur,
s.name,
i.iteration,
i.geomean,
1000.0 / i.geomean AS score
FROM iteration AS i
JOIN _chrome_speedometer_3_iteration_slice AS s
USING (iteration);
CREATE PERFETTO FUNCTION chrome_speedometer_3_score()
RETURNS DOUBLE AS
SELECT
avg(score)
FROM chrome_speedometer_3_iteration;
CREATE PERFETTO FUNCTION chrome_speedometer_3_renderer_main_utid()
RETURNS LONG AS
WITH
start_event AS (
SELECT
name || '-start' AS name
FROM _chrome_speedometer_3_measure_name
)
SELECT
utid
FROM thread_track
WHERE
id IN (
SELECT
track_id
FROM slice
JOIN start_event
USING (name)
WHERE
category = 'blink.user_timing'
);