mirror of
https://github.com/cberner/raptorq.git
synced 2024-06-30 18:51:43 +00:00
Add Octet benchmarks
This commit is contained in:
parent
aea5933a31
commit
d951e7c00c
@ -7,9 +7,38 @@ use criterion::Criterion;
|
||||
use rand::Rng;
|
||||
use raptorq::SourceBlockEncoder;
|
||||
use raptorq::SourceBlockDecoder;
|
||||
use raptorq::Octet;
|
||||
|
||||
|
||||
fn criterion_benchmark(c: &mut Criterion) {
|
||||
let octet1 = Octet::from(rand::thread_rng().gen_range(1, 255));
|
||||
let octet2 = Octet::from(rand::thread_rng().gen_range(1, 255));
|
||||
|
||||
let octet1_add = octet1.clone();
|
||||
let octet2_add = octet2.clone();
|
||||
c.bench_function("Octet add", move |b| b.iter(|| {
|
||||
octet1_add.clone() + octet2_add.clone()
|
||||
}));
|
||||
|
||||
let octet1_add_ref = octet1.clone();
|
||||
let octet2_add_ref = octet2.clone();
|
||||
c.bench_function("Octet add by ref", move |b| b.iter(|| {
|
||||
&octet1_add_ref + &octet2_add_ref
|
||||
}));
|
||||
|
||||
let octet1_mul = octet1.clone();
|
||||
let octet2_mul = octet2.clone();
|
||||
c.bench_function("Octet mul", move |b| b.iter(|| {
|
||||
octet1_mul.clone() * octet2_mul.clone()
|
||||
}));
|
||||
|
||||
let octet1_mul_ref = octet1.clone();
|
||||
let octet2_mul_ref = octet2.clone();
|
||||
c.bench_function("Octet mul by ref", move |b| b.iter(|| {
|
||||
&octet1_mul_ref * &octet2_mul_ref
|
||||
}));
|
||||
|
||||
|
||||
let elements = 10*1024;
|
||||
let symbol_size = 512;
|
||||
let mut data: Vec<u8> = vec![0; elements];
|
||||
|
@ -12,5 +12,6 @@ mod encoder;
|
||||
mod decoder;
|
||||
|
||||
pub use base::PayloadId;
|
||||
pub use octet::Octet;
|
||||
pub use encoder::SourceBlockEncoder;
|
||||
pub use decoder::SourceBlockDecoder;
|
||||
|
11
src/octet.rs
11
src/octet.rs
@ -125,6 +125,17 @@ impl Add for Octet {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, 'b> Add<&'b Octet> for &'a Octet {
|
||||
type Output = Octet;
|
||||
|
||||
fn add(self, other: &'b Octet) -> Octet {
|
||||
Octet {
|
||||
// As defined in section 5.7.2, addition on octets is implemented as bitxor
|
||||
value: self.value ^ other.value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl AddAssign for Octet {
|
||||
fn add_assign(&mut self, other: Octet) {
|
||||
self.value ^= other.value;
|
||||
|
Loading…
Reference in New Issue
Block a user