let bench_dir = $env.FILE_PWD
let rows = (1..3 | each {|trial|
    open --raw ($bench_dir | path join $"trial-($trial).stdout.txt")
    | lines
    | parse --regex '^\s*(?<algorithm>\S+)\s+(?<keygen>[0-9.]+)s\s+(?<sign>[0-9.]+)s\s+(?<verify>[0-9.]+)s\s+(?<keygen_rate>[0-9.]+)\s+(?<sign_rate>[0-9.]+)\s+(?<verify_rate>[0-9.]+)\s*$'
    | each {|row|
        {
            algorithm: $row.algorithm
            trial: $trial
            keygen_ms: (1000.0 / ($row.keygen_rate | into float))
            sign_ms: (1000.0 / ($row.sign_rate | into float))
            verify_ms: (1000.0 / ($row.verify_rate | into float))
        }
    }
} | flatten)
if ($rows | length) != 18 { error make {msg: "Expected 6 algorithms in each of 3 trials"} }
$rows | to csv | save -f ($bench_dir | path join "samples.csv")
let summary = ($rows | group-by algorithm | transpose algorithm samples | each {|group|
    {
        algorithm: $group.algorithm
        keygen_ms: ($group.samples.keygen_ms | math median)
        sign_ms: ($group.samples.sign_ms | math median)
        sign_min_ms: ($group.samples.sign_ms | math min)
        sign_max_ms: ($group.samples.sign_ms | math max)
        verify_ms: ($group.samples.verify_ms | math median)
    }
})
$summary | to csv | save -f ($bench_dir | path join "summary.csv")
$summary

Graph