Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Benchmark groups #8

Open
jO-Osko opened this issue Aug 2, 2021 · 1 comment
Open

Benchmark groups #8

jO-Osko opened this issue Aug 2, 2021 · 1 comment
Labels
question Further information is requested

Comments

@jO-Osko
Copy link
Collaborator

jO-Osko commented Aug 2, 2021

For our OOPSLA submission, we used a lot of similar benchmarks: 5 different loop varieties, multiple tree explorations... to see how different micro-changes impact compilation and final performance.

For example:

let rec loop_incr n =
    if n = 0 then
        ()
    else
        (perform (Incr ()); loop_incr (n - 1))

and similar that is not tail-recursive

let rec loop_incr' n =
    if n = 0 then
        ()
    else
        (loop_incr' (n - 1); perform (Incr ()))

Would it make sense to group them in some way or maybe add some sort of labels? It seems strange to have 7 benchmarks with 5 different loop versions.

@slindley
Copy link
Contributor

slindley commented Aug 2, 2021

Yeah. We had something similar with Handlers in Action: multiple implementations of handlers, multiple control implementations not using handlers at all, and a range of different parameters for each benchmark.

What we've done so far with that is to add the HIA code as is in the artifacts directory. We haven't yet documented the artifacts directory, but that's where you should put your original code.

The benchmarks directory is intended for smaller more uniform comparisons between systems that may not exactly match the original experiments. Having said that, you can put multiple files in a single benchmark directory. I don't think we've worked out how best to do multiple runs of the same benchmark there yet.

In general, I suspect we're going to want much finer grained control over which benchmarks are run. Running everything is likely to quickly become impractical for the CI, and on local machines we will often just want to run one particular benchmark.

For CI I suspect we really only want to check that the benchmarks compile and run (probably with some small parameter), rather than actually trying to do any actual performance measurements. We may also want to check that they give the correct results. For running locally we'll want a lot more control.

@dhil dhil added the question Further information is requested label Aug 2, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants