Split off benchmarks into separate module and require --features=bench.

This allows us to compile (and test) on the rustc stable and beta channels.
Benchmarking is only available on nightly, with the --features=bench flag.
This commit is contained in:
Isis Lovecruft 2017-03-14 21:37:46 +00:00
parent 304d591756
commit 85b0cd933c
Failed to extract signature
3 changed files with 34 additions and 26 deletions

View file

@ -37,3 +37,4 @@ rustc-serialize = "0.3"
[features]
default = ["std"]
std = ["rand"]
bench = []

View file

@ -385,32 +385,11 @@ mod test {
use std::fs::File;
use std::string::String;
use std::vec::Vec;
use test::Bencher;
use curve25519_dalek::curve::ExtendedPoint;
use rand::OsRng;
use rand::Rng;
use rustc_serialize::hex::FromHex;
use super::*;
/// A fake RNG which simply returns zeroes.
struct ZeroRng;
impl ZeroRng {
fn new() -> ZeroRng {
ZeroRng
}
}
impl Rng for ZeroRng {
fn next_u32(&mut self) -> u32 { 0u32 }
fn fill_bytes(&mut self, bytes: &mut [u8]) {
for i in 0 .. bytes.len() {
bytes[i] = 0;
}
}
}
#[test]
fn test_unmarshal_marshal() { // TestUnmarshalMarshal
let mut cspring: OsRng;
@ -508,9 +487,35 @@ mod test {
}
}
}
#[cfg(all(test, feature = "bench"))]
mod bench {
use test::Bencher;
use rand::OsRng;
use super::*;
/// A fake RNG which simply returns zeroes.
pub struct ZeroRng;
impl ZeroRng {
pub fn new() -> ZeroRng {
ZeroRng
}
}
impl Rng for ZeroRng {
fn next_u32(&mut self) -> u32 { 0u32 }
fn fill_bytes(&mut self, bytes: &mut [u8]) {
for i in 0 .. bytes.len() {
bytes[i] = 0;
}
}
}
#[bench]
fn bench_sign(b: &mut Bencher) {
fn sign(b: &mut Bencher) {
let mut cspring: OsRng = OsRng::new().unwrap();
let keypair: Keypair = Keypair::generate::<Sha512>(&mut cspring);
let msg: &[u8] = "test message".as_bytes();
@ -519,7 +524,7 @@ mod test {
}
#[bench]
fn bench_verify(b: &mut Bencher) {
fn verify(b: &mut Bencher) {
let mut cspring: OsRng = OsRng::new().unwrap();
let keypair: Keypair = Keypair::generate::<Sha512>(&mut cspring);
let msg: &[u8] = "test message".as_bytes();
@ -529,7 +534,7 @@ mod test {
}
#[bench]
fn bench_key_generation(b: &mut Bencher) {
fn key_generation(b: &mut Bencher) {
let mut rng: ZeroRng = ZeroRng::new();
b.iter(| | Keypair::generate::<Sha512>(&mut rng));

View file

@ -62,7 +62,7 @@
#![no_std]
#![feature(rand)]
#![allow(unused_features)]
#![feature(test)]
#![cfg_attr(feature = "bench", feature(test))]
#[macro_use]
extern crate arrayref;
@ -78,8 +78,10 @@ extern crate digest;
#[cfg(test)]
#[macro_use]
extern crate std;
#[cfg(test)]
#[cfg(all(test, feature = "bench"))]
extern crate test;
#[cfg(test)]
extern crate rustc_serialize;