#![feature(generic_associated_types)] #[macro_use] extern crate criterion; extern crate futures; mod common; use criterion::Criterion; use common::*; fn width(c: &mut Criterion) { let width_0 = [Large::default(); 0]; let width_1 = [Large::default(); 1]; let width_2 = [Large::default(); 2]; let width_3 = [Large::default(); 3]; let width_4 = [Large::default(); 4]; let width_5 = [Large::default(); 5]; let width_6 = [Large::default(); 6]; let width_7 = [Large::default(); 7]; let width_8 = [Large::default(); 8]; let width_9 = [Large::default(); 9]; let width_10 = [Large::default(); 10]; let name = "array_ser_width"; let mut group = c.benchmark_group(name); group.bench_with_input(criterion::BenchmarkId::new(name, "00"), &width_0 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "01"), &width_1 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "02"), &width_2 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "03"), &width_3 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "04"), &width_4 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "05"), &width_5 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "06"), &width_6 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "07"), &width_7 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "08"), &width_8 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "09"), &width_9 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "10"), &width_10, ser_bench); group.finish(); let name = "array_de_width"; let mut group = c.benchmark_group(name); group.bench_with_input(criterion::BenchmarkId::new(name, "00"), &width_0 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "01"), &width_1 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "02"), &width_2 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "03"), &width_3 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "04"), &width_4 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "05"), &width_5 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "06"), &width_6 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "07"), &width_7 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "08"), &width_8 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "09"), &width_9 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "10"), &width_10, de_bench); group.finish(); } fn depth(c: &mut Criterion) { let depth_0 = [Large::default(); 0]; let depth_1 = [Large::default()]; let depth_2 = [[Large::default()]]; let depth_3 = [[Large::default()]]; let depth_4 = [[[Large::default()]]]; let depth_5 = [[[[Large::default()]]]]; let depth_6 = [[[[[Large::default()]]]]]; let depth_7 = [[[[[[Large::default()]]]]]]; let depth_8 = [[[[[[[Large::default()]]]]]]]; let depth_9 = [[[[[[[[Large::default()]]]]]]]]; let depth_10 = [[[[[[[[[Large::default()]]]]]]]]]; let name = "array_ser_depth"; let mut group = c.benchmark_group(name); group.bench_with_input(criterion::BenchmarkId::new(name, "00"), &depth_0 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "01"), &depth_1 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "02"), &depth_2 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "03"), &depth_3 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "04"), &depth_4 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "05"), &depth_5 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "06"), &depth_6 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "07"), &depth_7 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "08"), &depth_8 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "09"), &depth_9 , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "10"), &depth_10, ser_bench); group.finish(); let name = "array_de_depth"; let mut group = c.benchmark_group(name); group.bench_with_input(criterion::BenchmarkId::new(name, "00"), &depth_0 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "01"), &depth_1 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "02"), &depth_2 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "03"), &depth_3 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "04"), &depth_4 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "05"), &depth_5 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "06"), &depth_6 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "07"), &depth_7 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "08"), &depth_8 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "09"), &depth_9 , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "10"), &depth_10, de_bench); group.finish(); } fn breadth(c: &mut Criterion) { let origin = [Large::default(); 0]; let breadth = [[[[[[[[[[Large::default()]]]]]]]]]; 10]; let name = "array_ser_breadth"; let mut group = c.benchmark_group(name); group.bench_with_input(criterion::BenchmarkId::new(name, "00"), &origin , ser_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "10"), &breadth, ser_bench); group.finish(); let name = "array_de_breadth"; let mut group = c.benchmark_group(name); group.bench_with_input(criterion::BenchmarkId::new(name, "00"), &origin , de_bench); group.bench_with_input(criterion::BenchmarkId::new(name, "10"), &breadth, de_bench); group.finish(); } criterion_group!(array, width, depth, breadth); criterion_main!(array);