uncomment benchmarks and tests

This commit is contained in:
Neemek 2025-11-06 23:20:07 +01:00
parent 76695723ed
commit 1fad1ffc4f
3 changed files with 50 additions and 46 deletions

View file

@ -4,3 +4,7 @@ version = "0.1.0"
edition = "2024" edition = "2024"
[dependencies] [dependencies]
[[bench]]
name = "chacha"
path = "benches/chacha.rs"

28
benches/chacha.rs Normal file
View file

@ -0,0 +1,28 @@
#![feature(test)]
extern crate test;
use test::{black_box, Bencher};
use chacha::do_chacha;
fn few_u32_to_many_u8(data: &[u32; 16]) -> [u8; 64] {
let mut out = [0u8; 64];
for (i, c) in data.iter().enumerate() {
out[i * 4..][..4].copy_from_slice(&u32::to_ne_bytes(*c));
}
out
}
#[bench]
fn bench_chacha_operation(b: &mut Bencher) {
// somewhat random data
let data = [69u8; 64];
let key = &[0u8; 32];
b.iter(|| {
black_box(do_chacha(data.as_slice(), key, [0; 3], 0, 20));
})
}

View file

@ -66,7 +66,7 @@ impl Block {
} }
#[inline] #[inline]
fn make_chacha_block(key: &[u32; 8], counter: u32, nonce: [u32; 3]) -> [u32; 16] { pub(crate) fn make_chacha_block(key: &[u32; 8], counter: u32, nonce: [u32; 3]) -> [u32; 16] {
[ [
CHACHA_CONSTANT[0], CHACHA_CONSTANT[0],
CHACHA_CONSTANT[1], CHACHA_CONSTANT[1],
@ -101,7 +101,7 @@ pub fn do_chacha(input: &[u8], key_bytes: &[u8; 32], nonce: [u32; 3], initial_co
bytes bytes
} }
fn chacha_rounds(input: [u32; 16], rounds: usize) -> [u32; 16] { pub(crate) fn chacha_rounds(input: [u32; 16], rounds: usize) -> [u32; 16] {
let mut x: [u32; 16] = input; let mut x: [u32; 16] = input;
for i in 0..rounds { for i in 0..rounds {
@ -156,9 +156,9 @@ fn chacha_quarter_round(x: &mut [u32; 16], a: usize, b: usize, c: usize, d: usiz
x[b] = x[b].rotate_left(7); x[b] = x[b].rotate_left(7);
} }
/* #[cfg(test)]
use test::{Bencher, black_box}; mod tests {
use crate::{chacha_quarter_round, chacha_rounds, do_chacha, few_u32_to_many_u8, make_chacha_block}; use crate::{chacha_quarter_round};
#[test] #[test]
fn test_chacha_quarter_round() { fn test_chacha_quarter_round() {
@ -175,32 +175,4 @@ fn test_chacha_quarter_round() {
assert_eq!(data[2], 0x4581472e); assert_eq!(data[2], 0x4581472e);
assert_eq!(data[3], 0x5881c4bb); assert_eq!(data[3], 0x5881c4bb);
} }
#[bench]
fn bench_make_chacha_block(b: &mut Bencher) {
b.iter(|| {
black_box(make_chacha_block(&[1u32; 8], 0, [0; 3]))
})
} }
#[bench]
fn bench_chacha_rounds(b: &mut Bencher) {
let data = [69u32; 16];
b.iter(|| {
black_box(chacha_rounds(data, 20));
})
}
#[bench]
fn bench_chacha_operation(b: &mut Bencher) {
// somewhat random data
let data = few_u32_to_many_u8(&chacha_rounds([69u32; 16], 20));
let key = &[0u8; 32];
b.iter(|| {
black_box(do_chacha(data.as_slice(), key, [0; 3], 0, 20));
})
}
*/