anp / lolbench

tracking performance of rustc-generated binaries over time
https://lolbench.rs
Apache License 2.0
105 stars 12 forks source link

META: benchmarks to include #1

Open anp opened 6 years ago

anp commented 6 years ago

This is a tracking issue for new benchmarks we'd like to add. If you're landing here from hacktoberfest (welcome!), feel free to see the project README for more information :D.

The basic process goes:

  1. find where the project in question keeps its benchmarks (usually in its repo under benches)
  2. read the documentation on adding new benchmarks
  3. add the benchmarks
  4. send a PR
  5. at a point in the near future, we'll start seeing results from the benchmarks you ported on https://blog.anp/lol/lolbench-data

unclaimed

please comment on individual issues to claim them!

finished

anp commented 6 years ago

https://github.com/Storyyeller/enjarify/tree/go/enjarify-rs ?

anp commented 6 years ago

https://benchmarksgame.alioth.debian.org/u64q/rust.html ?

anp commented 6 years ago

https://github.com/ruuda/claxon ?

gnzlbg commented 6 years ago

We should probably also include the benchmark-game programs from https://github.com/TeXitoi/benchmarksgame-rs .

Also I always wanted to port the remaining examples of the rust-lang-nursery/simd crate to rust-lang-nursery/stdsimd, maybe we should include those once they are done. They will probably both have a scalar and vectorized implementation, but catching regressions on LLVM vector type optimizations is worth pursuing.

The ISPC compiler has a bunch of examples that we might want to port to Rust: https://github.com/ispc/ispc/tree/master/examples

From the standard suites, porting SPEC2017 (https://www.spec.org/benchmarks.html) to Rust.


IMO when porting thins, we should port benchmarks to "idiomatic" Rust code.

anp commented 6 years ago

I agree! :p

Right now the benchmark count bottleneck is having enough machines to run them in a timely fashion, I need to dig in more on the bench timings and get the new server(s) I'm setting up ready.

I think ISPC and SPEC benchmarks would be fantastic to track as well!

anp commented 6 years ago

per @eddyb on irc, we should also include an equivalent to the inflate 0.3.4 benchmark with a more recent version of the crate.

eddyb commented 6 years ago

The very important bit is whether or not the debloating https://github.com/PistonDevelopers/inflate/pull/35 is included.

anp commented 6 years ago

@eternaleye gave me some reading homework and I'm saving it here for future reference:

https://www2.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.html

https://algowiki-project.org/en/Open_Encyclopedia_of_Parallel_Algorithmic_Features

http://superfri.org/superfri/article/view/69

https://github.com/vtsynergy/OpenDwarfs

http://dsc.soic.indiana.edu/publications/OgreFacets.pdf

https://www2.eecs.berkeley.edu/Pubs/TechRpts/2010/EECS-2010-144.html

https://www.sciencedirect.com/science/article/pii/S1877050912003353

gnzlbg commented 6 years ago

I've uploaded the ambient occlusion (ray-tracing) benchmarks: https://github.com/gnzlbg/aobench

The readme shows how to run the scalar, vectorized, and parallel versions. Probably it only makes sense to add the scalar and scalar_par benchmarks initially. The vector and vector_par benchmarks use std::simd and that's still in flux.

thomwiggers commented 6 years ago

https://benchmarksgame.alioth.debian.org/u64q/rust.html ?

Alioth is dead, but see https://benchmarksgame-team.pages.debian.net/benchmarksgame/measurements/rust.html

newpavlov commented 6 years ago

How about some crates from RustCrypto? sha2, sha3 and one of AES crates can be a good start.

anp commented 6 years ago

Going to lock this so it can just be a tracking issue. If you have ideas for other benchmarks we should include, please open an issue!