Browse Source

Separate benches from code

pull/9/merge
Cesar Eduardo Barros 6 years ago
parent
commit
388b0f2b92
  1. 16
      .travis.yml
  2. 1
      Cargo.toml
  3. 29
      benches/blake2b.rs
  4. 29
      benches/blake2s.rs
  5. 33
      src/blake2.rs
  6. 2
      src/blake2b.rs
  7. 2
      src/blake2s.rs
  8. 9
      src/lib.rs

16
.travis.yml

@ -14,21 +14,21 @@ matrix:
- rust: beta
env: FEATURES=--no-default-features
- rust: nightly
env: FEATURES=--features=bench
env: FEATURES=
- rust: nightly
env: FEATURES=--features=simd,bench
env: FEATURES=--features=simd
- rust: nightly
env: FEATURES=--features=simd_opt,bench
env: FEATURES=--features=simd_opt
- rust: nightly
env: FEATURES=--features=simd_asm,bench
env: FEATURES=--features=simd_asm
- rust: nightly
env: 'FEATURES="--no-default-features --features=bench"'
env: 'FEATURES="--no-default-features"'
- rust: nightly
env: 'FEATURES="--no-default-features --features=simd,bench"'
env: 'FEATURES="--no-default-features --features=simd"'
- rust: nightly
env: 'FEATURES="--no-default-features --features=simd_opt,bench"'
env: 'FEATURES="--no-default-features --features=simd_opt"'
- rust: nightly
env: 'FEATURES="--no-default-features --features=simd_asm,bench"'
env: 'FEATURES="--no-default-features --features=simd_asm"'
script:
- cargo build --verbose $FEATURES
- cargo test --verbose $FEATURES

1
Cargo.toml

@ -15,7 +15,6 @@ travis-ci = { repository = "cesarb/blake2-rfc" }
[features]
default = ["std"]
bench = []
simd = []
simd_opt = ["simd"]
simd_asm = ["simd_opt"]

29
benches/blake2b.rs

@ -0,0 +1,29 @@
#![feature(test)]
extern crate blake2_rfc;
extern crate test;
use std::iter::repeat;
use std::vec::Vec;
use test::Bencher;
use blake2_rfc::blake2b::Blake2b;
use blake2_rfc::_selftest_seq as selftest_seq;
fn bench_blake2b(bytes: usize, b: &mut Bencher) {
let data: Vec<u8> = repeat(selftest_seq(1024))
.flat_map(|v| v)
.take(bytes)
.collect();
b.bytes = bytes as u64;
b.iter(|| {
let mut state = Blake2b::default();
state.update(&data[..]);
state.finalize()
})
}
#[bench] fn blake2b_16(b: &mut Bencher) { bench_blake2b(16, b) }
#[bench] fn blake2b_4k(b: &mut Bencher) { bench_blake2b(4096, b) }
#[bench] fn blake2b_64k(b: &mut Bencher) { bench_blake2b(65536, b) }

29
benches/blake2s.rs

@ -0,0 +1,29 @@
#![feature(test)]
extern crate blake2_rfc;
extern crate test;
use std::iter::repeat;
use std::vec::Vec;
use test::Bencher;
use blake2_rfc::blake2s::Blake2s;
use blake2_rfc::_selftest_seq as selftest_seq;
fn bench_blake2s(bytes: usize, b: &mut Bencher) {
let data: Vec<u8> = repeat(selftest_seq(1024))
.flat_map(|v| v)
.take(bytes)
.collect();
b.bytes = bytes as u64;
b.iter(|| {
let mut state = Blake2s::default();
state.update(&data[..]);
state.finalize()
})
}
#[bench] fn blake2s_16(b: &mut Bencher) { bench_blake2s(16, b) }
#[bench] fn blake2s_4k(b: &mut Bencher) { bench_blake2s(4096, b) }
#[bench] fn blake2s_64k(b: &mut Bencher) { bench_blake2s(65536, b) }

33
src/blake2.rs

@ -339,6 +339,7 @@ macro_rules! blake2_impl {
#[cfg_attr(feature = "cargo-clippy", allow(cast_possible_truncation, unreadable_literal))]
#[cold]
#[doc(hidden)]
pub fn selftest_seq(len: usize) -> ArrayVec<[u8; 1024]> {
use core::num::Wrapping;
@ -386,35 +387,3 @@ macro_rules! blake2_selftest_impl {
}
}
}
macro_rules! blake2_bench_impl {
($state:ident) => {
#[cfg(all(feature = "bench", test))]
mod bench {
use std::iter::repeat;
use std::vec::Vec;
use test::Bencher;
use blake2::selftest_seq;
use super::$state;
fn bench_blake2(bytes: usize, b: &mut Bencher) {
let data: Vec<u8> = repeat(selftest_seq(1024))
.flat_map(|v| v)
.take(bytes)
.collect();
b.bytes = bytes as u64;
b.iter(|| {
let mut state = $state::default();
state.update(&data[..]);
state.finalize()
})
}
#[bench] fn bench_16(b: &mut Bencher) { bench_blake2(16, b) }
#[bench] fn bench_4k(b: &mut Bencher) { bench_blake2(4096, b) }
#[bench] fn bench_64k(b: &mut Bencher) { bench_blake2(65536, b) }
}
}
}

2
src/blake2b.rs

@ -50,8 +50,6 @@ blake2_selftest_impl!(Blake2b, blake2b, [
0x7F, 0x5E, 0x76, 0x5A, 0x7B, 0xCC, 0xD4, 0x75,
], [ 20, 32, 48, 64 ], [ 0, 3, 128, 129, 255, 1024 ]);
blake2_bench_impl!(Blake2b);
#[cfg(test)]
mod tests {
#![cfg_attr(feature = "cargo-clippy", allow(result_unwrap_used))]

2
src/blake2s.rs

@ -48,8 +48,6 @@ blake2_selftest_impl!(Blake2s, blake2s, [
0xFB, 0xDC, 0x88, 0x79, 0x7F, 0x4C, 0x1D, 0xFE,
], [ 16, 20, 28, 32 ], [ 0, 3, 64, 65, 255, 1024 ]);
blake2_bench_impl!(Blake2s);
#[cfg(test)]
mod tests {
#![cfg_attr(feature = "cargo-clippy", allow(result_unwrap_used))]

9
src/lib.rs

@ -14,18 +14,14 @@
#![cfg_attr(feature = "cargo-clippy", warn(clippy_pedantic))]
#![cfg_attr(feature = "cargo-clippy", allow(missing_docs_in_private_items))]
#![cfg_attr(all(feature = "bench", test), feature(test))]
#![cfg_attr(feature = "simd", feature(platform_intrinsics, repr_simd))]
#![cfg_attr(feature = "simd_opt", feature(cfg_target_feature))]
#![cfg_attr(feature = "simd_asm", feature(asm))]
#[cfg(any(feature = "std", all(feature = "bench", test)))]
#[cfg(feature = "std")]
#[macro_use]
extern crate std;
#[cfg(all(feature = "bench", test))]
extern crate test;
extern crate arrayvec;
extern crate constant_time_eq;
@ -50,3 +46,6 @@ pub fn selftest() {
blake2b::selftest();
blake2s::selftest();
}
// Internal export of selftest_seq for the benches, not part of the crate API.
pub use blake2::selftest_seq as _selftest_seq;

Loading…
Cancel
Save