Skip to content

Instantly share code, notes, and snippets.

@erichosick
Last active August 11, 2023 08:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save erichosick/123510d42586ec78bdce81d2e60d75e0 to your computer and use it in GitHub Desktop.
Save erichosick/123510d42586ec78bdce81d2e60d75e0 to your computer and use it in GitHub Desktop.
-- You must run the benchmark schema localed in
-- https://gist.github.com/erichosick/eeadc41e33ea2a91bd136b9433e73dc7
-- before running the following benchmark
DO $$
DECLARE d_exec_count int = 20;
DECLARE d_row_count int = 3e6;
BEGIN
CALL benchmark.execute(
'gen_random_uuid',
'gen_random_uuid',
d_row_count,
FORMAT(
'SELECT gen_random_uuid()
FROM generate_series(%s,%s) AS series;',
1, d_row_count
),
FORMAT(
'SELECT gen_random_uuid()
FROM generate_series(%s,%s) AS series;',
1, d_row_count
),
d_exec_count
);
CALL benchmark.execute(
'gen_random_uuid',
'uuid_generate_v1',
d_row_count,
FORMAT(
'SELECT gen_random_uuid()
FROM generate_series(%s,%s) AS series;',
1, d_row_count
),
FORMAT(
'SELECT uuid_generate_v1()
FROM generate_series(%s,%s) AS series;',
1, d_row_count
),
d_exec_count
);
CALL benchmark.execute(
'gen_random_uuid',
'uuid_generate_v4',
d_row_count,
FORMAT(
'SELECT gen_random_uuid()
FROM generate_series(%s,%s) AS series;',
1, d_row_count
),
FORMAT(
'SELECT uuid_generate_v4()
FROM generate_series(%s,%s) AS series;',
1, d_row_count
),
d_exec_count
);
CALL benchmark.execute(
'uuid_generate_v1',
'uuid_generate_v1mc',
d_row_count,
FORMAT(
'SELECT uuid_generate_v1()
FROM generate_series(%s,%s) AS series;',
1, d_row_count
),
FORMAT(
'SELECT uuid_generate_v1mc()
FROM generate_series(%s,%s) AS series;',
1, d_row_count
),
d_exec_count
);
CALL benchmark.execute(
'uuid_generate_v3',
'uuid_generate_v5',
d_row_count,
FORMAT(
'SELECT uuid_generate_v3(
uuid_ns_url(),
RANDOM()::text
) FROM generate_series(%s,%s) AS series;',
1, d_row_count
),
FORMAT(
'SELECT uuid_generate_v5(
uuid_ns_url(),
RANDOM()::text
) FROM generate_series(%s,%s) AS series;',
1, d_row_count
),
d_exec_count
);
END;
$$;
SELECT
thresh.faster_sql,
thresh.description_sql_left || ' - '
|| thresh.description_sql_right || ' | '
|| thresh.times_faster || 'x | '
|| thresh.average_left || ' ± ' ||
thresh.standard_deviation_left || ' | ' ||
thresh.average_right || ' ± ' ||
standard_deviation_right AS data_row
FROM benchmark.compare_result_outcome AS thresh
INNER JOIN benchmark.compare AS comp
ON comp.description_sql_left = thresh.description_sql_left
AND comp.description_sql_right = thresh.description_sql_right
ORDER BY comp.created_on ASC;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment