bench_csv_queries.txt

text/plain

Filename: bench_csv_queries.txt
Type: text/plain
Part: 0
Message: Re: Optimize numeric multiplication for one and two base-NBASE digit multiplicands.
CREATE TABLE bench (cpu text, var1ndigits int, version text, time numeric);

\COPY bench FROM bench.csv WITH CSV HEADER;

WITH ranked_bench AS (
    SELECT
        cpu,
        var1ndigits,
        version,
        ROW_NUMBER() OVER (PARTITION BY cpu, var1ndigits ORDER BY AVG(time)) AS rn
    FROM bench
    GROUP BY cpu, var1ndigits, version
)
SELECT
    cpu,
    var1ndigits,
    version AS winner
FROM ranked_bench
WHERE rn = 1
ORDER BY cpu, var1ndigits;


WITH avg_times AS (
    SELECT
        cpu,
        var1ndigits,
        version,
        AVG(time) AS avg_time
    FROM bench
    GROUP BY cpu, var1ndigits, version
),
head_times AS (
    SELECT
        cpu,
        var1ndigits,
        avg_time AS head_avg_time
    FROM avg_times
    WHERE version = 'HEAD'
)
SELECT
    a.cpu,
    a.var1ndigits,
    a.version,
    ROUND(h.head_avg_time / a.avg_time,2) AS performance_ratio
FROM avg_times a
JOIN head_times h
ON a.cpu = h.cpu AND a.var1ndigits = h.var1ndigits
ORDER BY a.cpu, a.var1ndigits, a.version;