uncomment benchmarks and tests
This commit is contained in:
parent
76695723ed
commit
1fad1ffc4f
3 changed files with 50 additions and 46 deletions
|
|
@ -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
28
benches/chacha.rs
Normal 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));
|
||||||
|
})
|
||||||
|
}
|
||||||
44
src/lib.rs
44
src/lib.rs
|
|
@ -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,12 +156,12 @@ 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() {
|
||||||
let mut data = [0u32; 16];
|
let mut data = [0u32; 16];
|
||||||
data[0] = 0x11111111;
|
data[0] = 0x11111111;
|
||||||
data[1] = 0x01020304;
|
data[1] = 0x01020304;
|
||||||
|
|
@ -174,33 +174,5 @@ fn test_chacha_quarter_round() {
|
||||||
assert_eq!(data[1], 0xcb1cf8ce);
|
assert_eq!(data[1], 0xcb1cf8ce);
|
||||||
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));
|
|
||||||
})
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue