move test binaries to examples/
These aren't installed and are only used for manual testing, so there's no reason to force them to be built all the time. Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
82
examples/cipherbench.rs
Normal file
82
examples/cipherbench.rs
Normal file
@ -0,0 +1,82 @@
|
||||
use anyhow::{Error};
|
||||
|
||||
// chacha20-poly1305
|
||||
|
||||
fn rate_test(name: &str, bench: &dyn Fn() -> usize) {
|
||||
|
||||
print!("{:<20} ", name);
|
||||
|
||||
let start = std::time::SystemTime::now();
|
||||
let duration = std::time::Duration::new(1, 0);
|
||||
|
||||
let mut bytes = 0;
|
||||
|
||||
loop {
|
||||
bytes += bench();
|
||||
let elapsed = start.elapsed().unwrap();
|
||||
if elapsed > duration { break; }
|
||||
}
|
||||
|
||||
let elapsed = start.elapsed().unwrap();
|
||||
let elapsed = (elapsed.as_secs() as f64) +
|
||||
(elapsed.subsec_millis() as f64)/1000.0;
|
||||
|
||||
println!("{:>8.1} MB/s", (bytes as f64)/(elapsed*1024.0*1024.0));
|
||||
}
|
||||
|
||||
|
||||
fn main() -> Result<(), Error> {
|
||||
|
||||
let input = proxmox::sys::linux::random_data(1024*1024)?;
|
||||
|
||||
rate_test("crc32", &|| {
|
||||
let mut crchasher = crc32fast::Hasher::new();
|
||||
crchasher.update(&input);
|
||||
let _checksum = crchasher.finalize();
|
||||
input.len()
|
||||
});
|
||||
|
||||
rate_test("zstd", &|| {
|
||||
zstd::block::compress(&input, 1).unwrap();
|
||||
input.len()
|
||||
});
|
||||
|
||||
rate_test("sha256", &|| {
|
||||
openssl::sha::sha256(&input);
|
||||
input.len()
|
||||
});
|
||||
|
||||
let key = proxmox::sys::linux::random_data(32)?;
|
||||
|
||||
let iv = proxmox::sys::linux::random_data(16)?;
|
||||
|
||||
let cipher = openssl::symm::Cipher::aes_256_gcm();
|
||||
|
||||
rate_test("aes-256-gcm", &|| {
|
||||
let mut tag = [0u8;16];
|
||||
openssl::symm::encrypt_aead(
|
||||
cipher,
|
||||
&key,
|
||||
Some(&iv),
|
||||
b"",
|
||||
&input,
|
||||
&mut tag).unwrap();
|
||||
input.len()
|
||||
});
|
||||
|
||||
let cipher = openssl::symm::Cipher::chacha20_poly1305();
|
||||
|
||||
rate_test("chacha20-poly1305", &|| {
|
||||
let mut tag = [0u8;16];
|
||||
openssl::symm::encrypt_aead(
|
||||
cipher,
|
||||
&key,
|
||||
Some(&iv[..12]),
|
||||
b"",
|
||||
&input,
|
||||
&mut tag).unwrap();
|
||||
input.len()
|
||||
});
|
||||
|
||||
Ok(())
|
||||
}
|
Reference in New Issue
Block a user