mirror of
https://github.com/mii443/merkle.rs.git
synced 2025-08-22 16:05:30 +00:00
Fix benchmarks
This commit is contained in:
26
Cargo.toml
26
Cargo.toml
@ -16,6 +16,20 @@ readme = "README.md"
|
||||
keywords = ["merkle", "merkle-tree"]
|
||||
categories = ["data-structures", "cryptography"]
|
||||
|
||||
[package.metadata.release]
|
||||
sign-commit = true
|
||||
upload-doc = true
|
||||
doc-branch = "gh-pages"
|
||||
pre-release-commit-message = "Release version {{version}}."
|
||||
pro-release-commit-message = "Start next development iteration {{version}}."
|
||||
tag-message = "Release version {{version}}."
|
||||
doc-commit-message = "Update documentation."
|
||||
dev-version-ext = "pre"
|
||||
|
||||
[[bench]]
|
||||
name = "proof"
|
||||
harness = false
|
||||
|
||||
[dependencies]
|
||||
ring = "^0.16.1"
|
||||
protobuf = { version = "^2.8.0", optional = true }
|
||||
@ -27,18 +41,10 @@ protoc-rust = { version = "^2.8.0", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
serde_json = "1.0.40"
|
||||
criterion = "0.2.11"
|
||||
rand = "0.7.0"
|
||||
|
||||
[features]
|
||||
serialization-protobuf = [ "protobuf", "protoc-rust" ]
|
||||
serialization-serde = [ "serde", "serde_derive" ]
|
||||
|
||||
[package.metadata.release]
|
||||
sign-commit = true
|
||||
upload-doc = true
|
||||
doc-branch = "gh-pages"
|
||||
pre-release-commit-message = "Release version {{version}}."
|
||||
pro-release-commit-message = "Start next development iteration {{version}}."
|
||||
tag-message = "Release version {{version}}."
|
||||
doc-commit-message = "Update documentation."
|
||||
dev-version-ext = "pre"
|
||||
|
||||
|
128
benches/lib.rs
128
benches/lib.rs
@ -1,128 +0,0 @@
|
||||
// #![feature(test)]
|
||||
// #![feature(rand)]
|
||||
|
||||
// extern crate rand;
|
||||
// extern crate test;
|
||||
|
||||
// extern crate merkle;
|
||||
// extern crate ring;
|
||||
|
||||
// use rand::Rng;
|
||||
// use test::Bencher;
|
||||
|
||||
// use ring::digest::{Algorithm, SHA512};
|
||||
|
||||
// use merkle::MerkleTree;
|
||||
|
||||
// #[allow(non_upper_case_globals)]
|
||||
// static digest: &'static Algorithm = &SHA512;
|
||||
|
||||
// #[bench]
|
||||
// fn bench_small_str_tree(b: &mut Bencher) {
|
||||
// let values = vec!["one", "two", "three", "four"];
|
||||
|
||||
// b.iter(|| MerkleTree::from_vec(digest, values.clone()));
|
||||
// }
|
||||
|
||||
// #[bench]
|
||||
// fn bench_small_str_proof_gen(b: &mut Bencher) {
|
||||
// let values = vec!["one", "two", "three", "four"];
|
||||
// let tree = MerkleTree::from_vec(digest, values.clone());
|
||||
|
||||
// b.iter(|| {
|
||||
// for value in &values {
|
||||
// let proof = tree.gen_proof(value);
|
||||
// test::black_box(proof);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
// #[bench]
|
||||
// fn bench_small_str_proof_check(b: &mut Bencher) {
|
||||
// let values = vec!["one", "two", "three", "four"];
|
||||
// let tree = MerkleTree::from_vec(digest, values.clone());
|
||||
// let proofs = values
|
||||
// .iter()
|
||||
// .map(|v| tree.gen_proof(v).unwrap())
|
||||
// .collect::<Vec<_>>();
|
||||
|
||||
// b.iter(|| {
|
||||
// for proof in &proofs {
|
||||
// test::black_box(proof.validate(tree.root_hash()));
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
// #[bench]
|
||||
// fn bench_big_rnd_tree(b: &mut Bencher) {
|
||||
// let mut values = vec![vec![0u8; 256]; 160];
|
||||
// let mut rng = rand::IsaacRng::new_unseeded();
|
||||
|
||||
// for mut v in &mut values {
|
||||
// rng.fill_bytes(&mut v);
|
||||
// }
|
||||
|
||||
// b.iter(|| {
|
||||
// let tree = MerkleTree::from_vec(digest, values.clone());
|
||||
// test::black_box(tree)
|
||||
// });
|
||||
// }
|
||||
|
||||
// #[bench]
|
||||
// fn bench_big_rnd_proof_gen(b: &mut Bencher) {
|
||||
// let mut values = vec![vec![0u8; 256]; 160];
|
||||
// let mut rng = rand::IsaacRng::new_unseeded();
|
||||
|
||||
// for mut v in &mut values {
|
||||
// rng.fill_bytes(&mut v);
|
||||
// }
|
||||
|
||||
// let tree = MerkleTree::from_vec(digest, values.clone());
|
||||
|
||||
// b.iter(|| {
|
||||
// for value in &values {
|
||||
// let proof = tree.gen_proof(value.clone());
|
||||
// test::black_box(proof);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
// #[bench]
|
||||
// fn bench_big_rnd_proof_check(b: &mut Bencher) {
|
||||
// let mut values = vec![vec![0u8; 256]; 160];
|
||||
// let mut rng = rand::IsaacRng::new_unseeded();
|
||||
|
||||
// for mut v in &mut values {
|
||||
// rng.fill_bytes(&mut v);
|
||||
// }
|
||||
|
||||
// let tree = MerkleTree::from_vec(digest, values.clone());
|
||||
// let proofs = values
|
||||
// .into_iter()
|
||||
// .map(|v| tree.gen_proof(v).unwrap())
|
||||
// .collect::<Vec<_>>();
|
||||
|
||||
// b.iter(|| {
|
||||
// for proof in &proofs {
|
||||
// test::black_box(proof.validate(tree.root_hash()));
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
// #[bench]
|
||||
// fn bench_big_rnd_iter(b: &mut Bencher) {
|
||||
// let mut values = vec![vec![0u8; 256]; 160];
|
||||
// let mut rng = rand::IsaacRng::new_unseeded();
|
||||
|
||||
// for mut v in &mut values {
|
||||
// rng.fill_bytes(&mut v);
|
||||
// }
|
||||
|
||||
// let tree = MerkleTree::from_vec(digest, values.clone());
|
||||
|
||||
// b.iter(|| {
|
||||
// for value in &tree {
|
||||
// test::black_box(value);
|
||||
// }
|
||||
// });
|
||||
// }
|
138
benches/proof.rs
Normal file
138
benches/proof.rs
Normal file
@ -0,0 +1,138 @@
|
||||
#[macro_use]
|
||||
extern crate criterion;
|
||||
|
||||
use criterion::black_box;
|
||||
use criterion::Criterion;
|
||||
|
||||
extern crate merkle;
|
||||
extern crate rand;
|
||||
extern crate ring;
|
||||
|
||||
use merkle::MerkleTree;
|
||||
use rand::RngCore;
|
||||
use ring::digest::{Algorithm, SHA512};
|
||||
|
||||
static DIGEST: &'static Algorithm = &SHA512;
|
||||
|
||||
fn bench_small_str_tree(c: &mut Criterion) {
|
||||
c.bench_function("MerkleTree::from_bec - small", |b| {
|
||||
let values = vec!["one", "two", "three", "four"];
|
||||
b.iter(|| MerkleTree::from_vec(DIGEST, black_box(values.clone())))
|
||||
});
|
||||
}
|
||||
|
||||
fn bench_small_str_proof_gen(c: &mut Criterion) {
|
||||
c.bench_function("MerkleTree::gen_proof - small", |b| {
|
||||
let values = vec!["one", "two", "three", "four"];
|
||||
let tree = MerkleTree::from_vec(DIGEST, values.clone());
|
||||
|
||||
b.iter(|| {
|
||||
for value in &values {
|
||||
tree.gen_proof(black_box(value));
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
fn bench_small_str_proof_check(c: &mut Criterion) {
|
||||
c.bench_function("MerkleTree::validate_proof - small", |b| {
|
||||
let values = vec!["one", "two", "three", "four"];
|
||||
let tree = MerkleTree::from_vec(DIGEST, values.clone());
|
||||
let proofs = values
|
||||
.iter()
|
||||
.map(|v| tree.gen_proof(v).unwrap())
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
b.iter(|| {
|
||||
for proof in &proofs {
|
||||
proof.validate(black_box(tree.root_hash()));
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
fn bench_big_rnd_tree(c: &mut Criterion) {
|
||||
c.bench_function("MerkleTree::from_vec - big", |b| {
|
||||
let mut values = vec![vec![0u8; 256]; 160];
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
for mut v in &mut values {
|
||||
rng.fill_bytes(&mut v);
|
||||
}
|
||||
|
||||
b.iter(|| MerkleTree::from_vec(DIGEST, black_box(values.clone())))
|
||||
});
|
||||
}
|
||||
|
||||
fn bench_big_rnd_proof_gen(c: &mut Criterion) {
|
||||
c.bench_function("MerkleTree::gen_proof - big", |b| {
|
||||
let mut values = vec![vec![0u8; 256]; 160];
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
for mut v in &mut values {
|
||||
rng.fill_bytes(&mut v);
|
||||
}
|
||||
|
||||
let tree = MerkleTree::from_vec(DIGEST, values.clone());
|
||||
|
||||
b.iter(|| {
|
||||
for value in &values {
|
||||
tree.gen_proof(black_box(value.clone()));
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
fn bench_big_rnd_proof_check(c: &mut Criterion) {
|
||||
c.bench_function("MerkleTree::validate_proof - big", |b| {
|
||||
let mut values = vec![vec![0u8; 256]; 160];
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
for mut v in &mut values {
|
||||
rng.fill_bytes(&mut v);
|
||||
}
|
||||
|
||||
let tree = MerkleTree::from_vec(DIGEST, values.clone());
|
||||
let proofs = values
|
||||
.into_iter()
|
||||
.map(|v| tree.gen_proof(v).unwrap())
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
b.iter(|| {
|
||||
for proof in &proofs {
|
||||
proof.validate(black_box(tree.root_hash()));
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
fn bench_big_rnd_iter(c: &mut Criterion) {
|
||||
c.bench_function("MerkleTree::iter - big", |b| {
|
||||
let mut values = vec![vec![0u8; 256]; 160];
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
for mut v in &mut values {
|
||||
rng.fill_bytes(&mut v);
|
||||
}
|
||||
|
||||
let tree = MerkleTree::from_vec(DIGEST, values.clone());
|
||||
b.iter(|| {
|
||||
for value in &tree {
|
||||
black_box(value);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
criterion_group!(
|
||||
benches,
|
||||
bench_small_str_tree,
|
||||
bench_small_str_proof_gen,
|
||||
bench_small_str_proof_check,
|
||||
bench_big_rnd_tree,
|
||||
bench_big_rnd_proof_gen,
|
||||
bench_big_rnd_proof_check,
|
||||
bench_big_rnd_iter,
|
||||
);
|
||||
|
||||
criterion_main!(benches);
|
Reference in New Issue
Block a user