Added benchmarks for both Trifloat and Oct32 encoding/decoding.

This commit is contained in:
Nathan Vegdahl 2018-11-29 11:09:48 -08:00
parent a6cae26c34
commit ea75e3ed21
6 changed files with 101 additions and 10 deletions

12
Cargo.lock generated
View File

@ -22,6 +22,11 @@ dependencies = [
"safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "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]] [[package]]
name = "bit-set" name = "bit-set"
version = "0.5.0" version = "0.5.0"
@ -165,7 +170,9 @@ dependencies = [
name = "oct32norm" name = "oct32norm"
version = "0.1.0" version = "0.1.0"
dependencies = [ 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)", "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]] [[package]]
@ -469,6 +476,10 @@ dependencies = [
[[package]] [[package]]
name = "trifloat" name = "trifloat"
version = "0.1.0" 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]] [[package]]
name = "ucd-util" 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 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 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 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-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 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" "checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf"

View File

@ -9,4 +9,10 @@ name = "oct32norm"
path = "src/lib.rs" path = "src/lib.rs"
[dev-dependencies] [dev-dependencies]
proptest = "0.8" proptest = "0.8"
bencher = "0.1.5"
rand = "0.6"
[[bench]]
name = "bench"
harness = false

View 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);

View File

@ -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)

View File

@ -7,3 +7,11 @@ license = "MIT"
[lib] [lib]
name = "trifloat" name = "trifloat"
path = "src/lib.rs" path = "src/lib.rs"
[dev-dependencies]
bencher = "0.1.5"
rand = "0.6"
[[bench]]
name = "bench"
harness = false

View 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);