mirror of
https://github.com/saymrwulf/curve25519-dalek-source.git
synced 2026-09-04 20:24:10 +00:00
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:
parent
304d591756
commit
85b0cd933c
3 changed files with 34 additions and 26 deletions
|
|
@ -37,3 +37,4 @@ rustc-serialize = "0.3"
|
|||
[features]
|
||||
default = ["std"]
|
||||
std = ["rand"]
|
||||
bench = []
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue