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 rand::Rng;
|
||||||
use raptorq::SourceBlockEncoder;
|
use raptorq::SourceBlockEncoder;
|
||||||
use raptorq::SourceBlockDecoder;
|
use raptorq::SourceBlockDecoder;
|
||||||
|
use raptorq::Octet;
|
||||||
|
|
||||||
|
|
||||||
fn criterion_benchmark(c: &mut Criterion) {
|
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 elements = 10*1024;
|
||||||
let symbol_size = 512;
|
let symbol_size = 512;
|
||||||
let mut data: Vec<u8> = vec![0; elements];
|
let mut data: Vec<u8> = vec![0; elements];
|
||||||
|
@ -12,5 +12,6 @@ mod encoder;
|
|||||||
mod decoder;
|
mod decoder;
|
||||||
|
|
||||||
pub use base::PayloadId;
|
pub use base::PayloadId;
|
||||||
|
pub use octet::Octet;
|
||||||
pub use encoder::SourceBlockEncoder;
|
pub use encoder::SourceBlockEncoder;
|
||||||
pub use decoder::SourceBlockDecoder;
|
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 {
|
impl AddAssign for Octet {
|
||||||
fn add_assign(&mut self, other: Octet) {
|
fn add_assign(&mut self, other: Octet) {
|
||||||
self.value ^= other.value;
|
self.value ^= other.value;
|
||||||
|
Loading…
Reference in New Issue
Block a user