feat(pareto): add benchmark for pareto computation

This commit is contained in:
Mayeul@Zama
2022-06-23 15:28:31 +02:00
committed by mayeul-zama
parent b4821b4b8c
commit b446d3124d
3 changed files with 46 additions and 18 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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);
}
}