Skip to content

Instantly share code, notes, and snippets.

@nagisa
Last active August 29, 2015 14:11
Show Gist options
  • Save nagisa/00b1b84fecee2a86bd60 to your computer and use it in GitHub Desktop.
Save nagisa/00b1b84fecee2a86bd60 to your computer and use it in GitHub Desktop.
Rust being slower when optimised?
$ rustc slower.rs --test -C no-stack-check -O
$ ./slower --bench
running 1 test
test bench_stdrng_u64 ... bench: 187 ns/iter (+/- 14) = 42 MB/s
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
$ rustc slower.rs --test -C no-stack-check
$ ./slower --bench
running 1 test
test bench_stdrng_u64 ... bench: 127 ns/iter (+/- 6) = 62 MB/s
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
extern crate test;
use test::Bencher;
use std::rand::Rng;
use std::rand::StdRng;
// Note: StdRng passed by value
fn next_u64(mut gen : StdRng) -> u64 {
gen.next_u64()
}
// Runs considerably slower with optimisations on…?
#[bench]
fn bench_stdrng_u64(b : &mut Bencher) {
if let Ok(mut gen) = StdRng::new() {
b.bytes = 8;
b.iter(|| {
next_u64(gen)
});
} else {
panic!("couldn’t create StdRng");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment