diff --git a/Cargo.lock b/Cargo.lock index 4ce5993..681b9e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -22,6 +22,11 @@ dependencies = [ "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "bencher" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "bit-set" version = "0.5.0" @@ -165,7 +170,9 @@ dependencies = [ name = "oct32norm" version = "0.1.0" dependencies = [ + "bencher 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -469,6 +476,10 @@ dependencies = [ [[package]] name = "trifloat" version = "0.1.0" +dependencies = [ + "bencher 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "ucd-util" @@ -516,6 +527,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6b3568b48b7cefa6b8ce125f9bb4989e52fbcc29ebea88df04cc7c5f12f70455" "checksum atty 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8352656fd42c30a0c3c89d26dea01e3b77c0ab2af18230835c15e2e13cd51859" "checksum base64 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "229d032f1a99302697f10b27167ae6d03d49d032e6a8e2550e8d3fc13356d2b4" +"checksum bencher 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7dfdb4953a096c551ce9ace855a604d702e6e62d77fac690575ae347571717f5" "checksum bit-set 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6f1efcc46c18245a69c38fcc5cc650f16d3a59d034f3106e9ed63748f695730a" "checksum bit-vec 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4440d5cb623bb7390ae27fec0bb6c61111969860f8e3ae198bfa0663645e67cf" "checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf" diff --git a/sub_crates/oct32norm/Cargo.toml b/sub_crates/oct32norm/Cargo.toml index 39e6ee7..5fd729d 100644 --- a/sub_crates/oct32norm/Cargo.toml +++ b/sub_crates/oct32norm/Cargo.toml @@ -9,4 +9,10 @@ name = "oct32norm" path = "src/lib.rs" [dev-dependencies] -proptest = "0.8" \ No newline at end of file +proptest = "0.8" +bencher = "0.1.5" +rand = "0.6" + +[[bench]] +name = "bench" +harness = false \ No newline at end of file diff --git a/sub_crates/oct32norm/benches/bench.rs b/sub_crates/oct32norm/benches/bench.rs new file mode 100644 index 0000000..d0d3133 --- /dev/null +++ b/sub_crates/oct32norm/benches/bench.rs @@ -0,0 +1,37 @@ +#[macro_use] +extern crate bencher; +extern crate oct32norm; +extern crate rand; + +use bencher::{black_box, Bencher}; +use oct32norm::{decode, encode}; +use rand::{rngs::SmallRng, FromEntropy, Rng}; + +//---- + +fn encode_100_values(bench: &mut Bencher) { + let mut rng = SmallRng::from_entropy(); + bench.iter(|| { + let x = rng.gen::() - 0.5; + let y = rng.gen::() - 0.5; + let z = rng.gen::() - 0.5; + for _ in 0..100 { + black_box(encode(black_box((x, y, z)))); + } + }); +} + +fn decode_100_values(bench: &mut Bencher) { + let mut rng = SmallRng::from_entropy(); + bench.iter(|| { + let v = rng.gen::(); + for _ in 0..100 { + black_box(decode(black_box(v))); + } + }); +} + +//---- + +benchmark_group!(benches, encode_100_values, decode_100_values,); +benchmark_main!(benches); diff --git a/sub_crates/oct32norm/tests/proptest_tests.proptest-regressions b/sub_crates/oct32norm/tests/proptest_tests.proptest-regressions deleted file mode 100644 index d181f04..0000000 --- a/sub_crates/oct32norm/tests/proptest_tests.proptest-regressions +++ /dev/null @@ -1,9 +0,0 @@ -# Seeds for failure cases proptest has generated in the past. It is -# automatically read and these particular cases re-run before any -# novel cases are generated. -# -# It is recommended to check this file in to source control so that -# everyone who runs the test benefits from these saved cases. -xs 2999539226 326675911 3987401019 2999607733 # shrinks to v = (-0.41956997, 0.0, 0.0) -xs 3917888384 62374025 2334923077 3025250995 # shrinks to v = (-0.14978456, 0.6395848, -0.5405228) -xs 577284199 2546407762 2751612650 3421307724 # shrinks to v = (0.3486824, -0.9764652, 0.4179709) diff --git a/sub_crates/trifloat/Cargo.toml b/sub_crates/trifloat/Cargo.toml index ec1c093..5af1740 100644 --- a/sub_crates/trifloat/Cargo.toml +++ b/sub_crates/trifloat/Cargo.toml @@ -7,3 +7,11 @@ license = "MIT" [lib] name = "trifloat" path = "src/lib.rs" + +[dev-dependencies] +bencher = "0.1.5" +rand = "0.6" + +[[bench]] +name = "bench" +harness = false \ No newline at end of file diff --git a/sub_crates/trifloat/benches/bench.rs b/sub_crates/trifloat/benches/bench.rs new file mode 100644 index 0000000..5cef120 --- /dev/null +++ b/sub_crates/trifloat/benches/bench.rs @@ -0,0 +1,37 @@ +#[macro_use] +extern crate bencher; +extern crate rand; +extern crate trifloat; + +use bencher::{black_box, Bencher}; +use rand::{rngs::SmallRng, FromEntropy, Rng}; +use trifloat::{decode, encode}; + +//---- + +fn encode_100_values(bench: &mut Bencher) { + let mut rng = SmallRng::from_entropy(); + bench.iter(|| { + let x = rng.gen::() - 0.5; + let y = rng.gen::() - 0.5; + let z = rng.gen::() - 0.5; + for _ in 0..100 { + black_box(encode(black_box((x, y, z)))); + } + }); +} + +fn decode_100_values(bench: &mut Bencher) { + let mut rng = SmallRng::from_entropy(); + bench.iter(|| { + let v = rng.gen::(); + for _ in 0..100 { + black_box(decode(black_box(v))); + } + }); +} + +//---- + +benchmark_group!(benches, encode_100_values, decode_100_values,); +benchmark_main!(benches);