add two benchmarks

This commit is contained in:
Y. T. Chung
2014-10-24 17:09:59 +08:00
parent 0026bf92e3
commit 34fbefb13a
2 changed files with 48 additions and 1 deletions

View File

@@ -22,6 +22,7 @@
//! Crypto methods for shadowsocks
extern crate libc;
extern crate test;
pub mod cipher;
pub mod openssl;

View File

@@ -23,6 +23,7 @@
extern crate libc;
extern crate log;
extern crate test;
use crypto::cipher::Cipher;
use crypto::cipher;
@@ -409,7 +410,7 @@ impl Cipher for OpenSSLCipher {
}
#[test]
fn test_aes() {
fn test_default_ciphers() {
use std::str;
let message = "hello world";
@@ -454,3 +455,48 @@ fn test_aes() {
assert!(message.as_bytes() == decrypted_msg.as_slice());
}
}
#[bench]
fn bench_openssl_default_cipher_encrypt(b: &mut test::Bencher) {
use std::rand::random;
let msg_size: uint = 0xffff;
let mut test_data = Vec::new();
for _ in range::<uint>(0, 100) {
let msg = Vec::from_fn(msg_size, |_| random::<u8>());
let key = Vec::from_fn(1 + random::<uint>() % 63, |_| random::<u8>());
test_data.push((msg, key));
}
b.iter(|| {
let (ref msg, ref key) = test_data[random::<uint>() % test_data.len()];
let mut cipher = OpenSSLCipher::new(cipher::CipherTypeAes256Cfb, key.as_slice());
cipher.encrypt(msg.as_slice());
});
b.bytes = msg_size as u64;
}
#[bench]
fn bench_openssl_default_cipher_decrypt(b: &mut test::Bencher) {
use std::rand::random;
let msg_size: uint = 0xffff;
let mut test_data = Vec::new();
for _ in range::<uint>(0, 100) {
let msg = Vec::from_fn(msg_size, |_| random::<u8>());
let key = Vec::from_fn(1 + random::<uint>() % 63, |_| random::<u8>());
let mut cipher = OpenSSLCipher::new(cipher::CipherTypeAes256Cfb, key.as_slice());
let encrypted_msg = cipher.encrypt(msg.as_slice());
test_data.push((key, encrypted_msg));
}
b.iter(|| {
let (ref key, ref encrypted_msg) = test_data[random::<uint>() % test_data.len()];
let mut cipher = OpenSSLCipher::new(cipher::CipherTypeAes256Cfb, key.as_slice());
cipher.decrypt(encrypted_msg.as_slice());
});
b.bytes = msg_size as u64;
}