Added benchmarks for both Trifloat and Oct32 encoding/decoding.
This commit is contained in:
parent
a6cae26c34
commit
ea75e3ed21
12
Cargo.lock
generated
12
Cargo.lock
generated
|
@ -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"
|
||||
|
|
|
@ -9,4 +9,10 @@ name = "oct32norm"
|
|||
path = "src/lib.rs"
|
||||
|
||||
[dev-dependencies]
|
||||
proptest = "0.8"
|
||||
proptest = "0.8"
|
||||
bencher = "0.1.5"
|
||||
rand = "0.6"
|
||||
|
||||
[[bench]]
|
||||
name = "bench"
|
||||
harness = false
|
37
sub_crates/oct32norm/benches/bench.rs
Normal file
37
sub_crates/oct32norm/benches/bench.rs
Normal file
|
@ -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::<f32>() - 0.5;
|
||||
let y = rng.gen::<f32>() - 0.5;
|
||||
let z = rng.gen::<f32>() - 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::<u32>();
|
||||
for _ in 0..100 {
|
||||
black_box(decode(black_box(v)));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//----
|
||||
|
||||
benchmark_group!(benches, encode_100_values, decode_100_values,);
|
||||
benchmark_main!(benches);
|
|
@ -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)
|
|
@ -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
|
37
sub_crates/trifloat/benches/bench.rs
Normal file
37
sub_crates/trifloat/benches/bench.rs
Normal file
|
@ -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::<f32>() - 0.5;
|
||||
let y = rng.gen::<f32>() - 0.5;
|
||||
let z = rng.gen::<f32>() - 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::<u32>();
|
||||
for _ in 0..100 {
|
||||
black_box(decode(black_box(v)));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//----
|
||||
|
||||
benchmark_group!(benches, encode_100_values, decode_100_values,);
|
||||
benchmark_main!(benches);
|
Loading…
Reference in New Issue
Block a user