#![allow(missing_docs)]
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
use rand::SeedableRng;
use unit_root::prelude::distrib::Regression;
use unit_root::prelude::tools::adf_test;
use unit_root::utils::gen_ar_1;
fn adf_benchmark_f32_2(c: &mut Criterion) {
for size in [100, 200, 500, 1000, 5000].iter() {
let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(42);
let lag = 2;
let mu: f32 = 0.;
let delta = 0.5;
let sigma = 1.0;
let y = gen_ar_1(&mut rng, *size, mu, delta, sigma);
c.bench_with_input(BenchmarkId::new("adf_f32_2", size), &y, |b, y| {
b.iter(|| adf_test(y, lag, Regression::Constant))
});
}
}
fn adf_benchmark_f64_2(c: &mut Criterion) {
for size in [100, 200, 500, 1000, 5000].iter() {
let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(42);
let lag = 2;
let mu: f64 = 0.;
let delta = 0.5;
let sigma = 1.0;
let y = gen_ar_1(&mut rng, *size, mu, delta, sigma);
c.bench_with_input(BenchmarkId::new("adf_f64_2", size), &y, |b, y| {
b.iter(|| adf_test(y, lag, Regression::Constant))
});
}
}
fn adf_benchmark_f32_10(c: &mut Criterion) {
for size in [100, 200, 500, 1000, 5000].iter() {
let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(42);
let lag = 10;
let mu: f32 = 0.;
let delta = 0.5;
let sigma = 1.0;
let y = gen_ar_1(&mut rng, *size, mu, delta, sigma);
c.bench_with_input(BenchmarkId::new("adf_f32_10", size), &y, |b, y| {
b.iter(|| adf_test(y, lag, Regression::Constant))
});
}
}
fn adf_benchmark_f64_10(c: &mut Criterion) {
for size in [100, 200, 500, 1000, 5000].iter() {
let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(42);
let lag = 10;
let mu: f64 = 0.;
let delta = 0.5;
let sigma = 1.0;
let y = gen_ar_1(&mut rng, *size, mu, delta, sigma);
c.bench_with_input(BenchmarkId::new("adf_f64_10", size), &y, |b, y| {
b.iter(|| adf_test(y, lag, Regression::Constant))
});
}
}
criterion_group!(
benches,
adf_benchmark_f32_2,
adf_benchmark_f64_2,
adf_benchmark_f32_10,
adf_benchmark_f64_10
);
criterion_main!(benches);