diff --git a/concrete-optimizer/Cargo.toml b/concrete-optimizer/Cargo.toml index 6d705e353..a029e5eb3 100644 --- a/concrete-optimizer/Cargo.toml +++ b/concrete-optimizer/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -delegate = "0.6.2" +delegate = "0.7.0" derive_more = "0.99.17" concrete-commons = { git = "ssh://git@github.com/zama-ai/concrete_internal.git", branch = "fix/optimizer_compat" } concrete-npe = { git = "ssh://git@github.com/zama-ai/concrete_internal.git", branch = "fix/optimizer_compat" } @@ -15,8 +15,13 @@ statrs = "0.15.0" [dev-dependencies] approx = "0.5" pretty_assertions = "1.2.1" +criterion = "0.3" [lib] crate-type= [ "lib", # rust ] + +[[bench]] +name = "benchmark" +harness = false diff --git a/concrete-optimizer/benches/benchmark.rs b/concrete-optimizer/benches/benchmark.rs new file mode 100644 index 000000000..bfe06e720 --- /dev/null +++ b/concrete-optimizer/benches/benchmark.rs @@ -0,0 +1,32 @@ +use concrete_optimizer::global_parameters::DEFAUT_DOMAINS; +use concrete_optimizer::pareto::{extract_br_pareto, extract_ks_pareto}; +use criterion::{black_box, criterion_group, criterion_main, Criterion}; + +fn br_pareto_benchmark(c: &mut Criterion) { + c.bench_function("BR pareto", |b| { + b.iter(|| { + black_box(extract_br_pareto( + 128, + &DEFAUT_DOMAINS.glwe_pbs_constrained, + &DEFAUT_DOMAINS.free_glwe.into(), + 64, + )) + }) + }); +} + +fn ks_pareto_benchmark(c: &mut Criterion) { + c.bench_function("KS pareto", |b| { + b.iter(|| { + black_box(extract_ks_pareto( + 128, + &DEFAUT_DOMAINS.glwe_pbs_constrained, + &DEFAUT_DOMAINS.free_glwe.into(), + 64, + )) + }) + }); +} + +criterion_group!(benches, br_pareto_benchmark, ks_pareto_benchmark); +criterion_main!(benches); diff --git a/concrete-optimizer/src/pareto.rs b/concrete-optimizer/src/pareto.rs index 55960d502..6da08ea45 100644 --- a/concrete-optimizer/src/pareto.rs +++ b/concrete-optimizer/src/pareto.rs @@ -186,11 +186,9 @@ mod tests { use super::*; use crate::global_parameters::DEFAUT_DOMAINS; use pretty_assertions::assert_eq; - use std::time::Instant; #[test] fn extract_br_pareto2() { - let start = Instant::now(); let pareto = extract_br_pareto( 128, &DEFAUT_DOMAINS.glwe_pbs_constrained, @@ -203,20 +201,16 @@ mod tests { if br_bl != BR_BL { println!("---- Copy past to BR_BL"); for (log2_base, level) in &br_bl { - print!("({}, {}),", log2_base, level); + print!("({log2_base}, {level}), "); } - println!("\n---- End"); - assert_eq!(BR_BL, br_bl.as_slice()); + println!(); + println!("---- End"); + assert_eq!(br_bl, BR_BL); } - - let duration = start.elapsed(); - - println!("Time elapsed in extract_br_pareto2() is: {:?}", duration); } #[test] fn extract_ks_pareto2() { - let start = Instant::now(); let pareto = extract_ks_pareto( 128, &DEFAUT_DOMAINS.glwe_pbs_constrained, @@ -229,14 +223,11 @@ mod tests { if ks_bl != KS_BL { println!("---- Copy past to KS_BL"); for (log2_base, level) in &ks_bl { - print!("({}, {}),", log2_base, level); + print!("({log2_base}, {level}), "); } - println!("\n---- End"); - assert_eq!(KS_BL, ks_bl.as_slice()); + println!(); + println!("---- End"); + assert_eq!(ks_bl, KS_BL); } - - let duration = start.elapsed(); - - println!("Time elapsed in extract_ks_pareto2() is: {:?}", duration); } }