1
1
mirror of https://github.com/tweag/nickel.git synced 2024-10-05 07:37:09 +03:00

small fix in ncl_bench_group macro and update benches to use this

macro
This commit is contained in:
francois-caddet 2022-04-04 18:26:13 +02:00
parent bbf49162f7
commit d9be58e6e9
5 changed files with 129 additions and 204 deletions

View File

@ -1,165 +1,107 @@
use criterion::{criterion_group, criterion_main, Criterion};
use nickel_lang_utilities::{bench_terms, Bench, EvalMode};
use criterion::{criterion_main, Criterion};
use nickel_lang_utilities::{ncl_bench_group, EvalMode};
use pprof::criterion::{Output, PProfProfiler};
pub fn benches() {
let config =
Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None)));
let mut criterion: Criterion<_> = config.configure_from_args();
let target = bench_terms(vec![
Bench::bench(
"foldr strings 50",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("right.strings"),
50,
EvalMode::Normal,
),
Bench::bench(
"foldr deepseq strings 30",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("right.strings"),
30,
EvalMode::DeepSeq,
),
Bench::bench(
"foldr nums 50",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("right.nums"),
50,
EvalMode::Normal,
),
Bench::bench(
"foldr deepseq nums 30",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("right.nums"),
30,
EvalMode::DeepSeq,
),
Bench::bench(
"foldr arrays 50",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("right.arrays"),
50,
EvalMode::Normal,
),
Bench::bench(
"foldr deepseq arrays 30",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("right.arrays"),
30,
EvalMode::DeepSeq,
),
Bench::bench(
"foldl strings 50",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("left.strings"),
50,
EvalMode::Normal,
),
Bench::bench(
"foldl deepseq strings 30",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("left.strings"),
30,
EvalMode::DeepSeq,
),
Bench::bench(
"foldl nums 50",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("left.nums"),
50,
EvalMode::Normal,
),
Bench::bench(
"foldl deepseq nums 30",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("left.nums"),
30,
EvalMode::DeepSeq,
),
Bench::bench(
"foldl arrays 50",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("left.arrays"),
50,
EvalMode::Normal,
),
Bench::bench(
"foldl deepseq arrays 30",
env!("CARGO_MANIFEST_DIR"),
"arrays/fold",
Some("left.arrays"),
30,
EvalMode::DeepSeq,
),
Bench::bench(
"generate normal 50",
env!("CARGO_MANIFEST_DIR"),
"arrays/generate",
None,
50,
EvalMode::Normal,
),
Bench::bench(
"generate deepseq 30",
env!("CARGO_MANIFEST_DIR"),
"arrays/generate",
None,
30,
EvalMode::DeepSeq,
),
Bench::bench(
"map normal 50",
env!("CARGO_MANIFEST_DIR"),
"arrays/map",
None,
50,
EvalMode::Normal,
),
Bench::bench(
"map deepseq 30",
env!("CARGO_MANIFEST_DIR"),
"arrays/map",
None,
30,
EvalMode::DeepSeq,
),
Bench::bench(
"pipe normal 20",
env!("CARGO_MANIFEST_DIR"),
"arrays/pipe",
None,
20,
EvalMode::Normal,
),
Bench::bench(
"pipe deepseq 20",
env!("CARGO_MANIFEST_DIR"),
"arrays/pipe",
None,
20,
EvalMode::DeepSeq,
),
Bench::bench(
"sort normal",
env!("CARGO_MANIFEST_DIR"),
"arrays/sort",
None,
20,
EvalMode::Normal,
),
]);
target(&mut criterion);
ncl_bench_group! {
name = benches;
config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None)));
{
name = "foldr strings 50",
path = "arrays/fold",
subtest = "right.strings",
args = (50),
}, {
name = "foldr deepseq strings 30",
path = "arrays/fold",
subtest = "right.strings",
args = (30),
eval_mode = EvalMode::DeepSeq,
}, {
name = "foldr nums 50",
path = "arrays/fold",
subtest = "right.nums",
args = (50),
}, {
name = "foldr deepseq nums 30",
path = "arrays/fold",
subtest = "right.nums",
args = (30),
eval_mode = EvalMode::DeepSeq,
}, {
name = "foldr arrays 50",
path = "arrays/fold",
subtest = "right.arrays",
args = (50),
}, {
name = "foldr deepseq arrays 30",
path = "arrays/fold",
subtest = "right.arrays",
args = (30),
eval_mode = EvalMode::DeepSeq,
}, {
name = "foldl strings 50",
path = "arrays/fold",
subtest = "left.strings",
args = (50),
}, {
name = "foldl deepseq strings 30",
path = "arrays/fold",
subtest = "left.strings",
args = (30),
eval_mode = EvalMode::DeepSeq,
}, {
name = "foldl nums 50",
path = "arrays/fold",
subtest = "left.nums",
args = (50),
}, {
name = "foldl deepseq nums 30",
path = "arrays/fold",
subtest = "left.nums",
args = (30),
eval_mode = EvalMode::DeepSeq,
}, {
name = "foldl arrays 50",
path = "arrays/fold",
subtest = "left.arrays",
args = (50),
}, {
name = "foldl deepseq arrays 30",
path = "arrays/fold",
subtest = "left.arrays",
args = (30),
eval_mode = EvalMode::DeepSeq,
}, {
name = "generate normal 50",
path = "arrays/generate",
args = (50),
}, {
name = "generate deepseq 30",
path = "arrays/generate",
args = (30),
eval_mode = EvalMode::DeepSeq,
}, {
name = "map normal 50",
path = "arrays/map",
args = (50),
}, {
name = "map deepseq 30",
path = "arrays/map",
args = (30),
eval_mode = EvalMode::DeepSeq,
}, {
name = "pipe normal 20",
path = "arrays/pipe",
args = (20),
}, {
name = "pipe deepseq 20",
path = "arrays/pipe",
args = (20),
eval_mode = EvalMode::DeepSeq,
}, {
name = "sort normal",
path = "arrays/sort",
args = (20),
}
}
criterion_main!(benches);

View File

@ -1,22 +1,14 @@
use criterion::{criterion_group, criterion_main, Criterion};
use nickel_lang::term::Term;
use nickel_lang_utilities::{bench_terms, Bench, EvalMode};
use nickel_lang_utilities::{ncl_bench_group, EvalMode};
use pprof::criterion::{Output, PProfProfiler};
pub fn benches() {
let config =
Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None)));
let mut criterion: Criterion<_> = config.configure_from_args();
let expect = |term| matches!(term, Term::Bool(true));
let target = bench_terms(vec![Bench::bench_expect(
"church 3",
env!("CARGO_MANIFEST_DIR"),
"functions/church",
None,
3,
EvalMode::Normal,
expect,
)]);
target(&mut criterion);
ncl_bench_group! {
name = benches;
config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None)));
{
name = "church 3",
path = "functions/church",
args = (3),
}
}
criterion_main!(benches);

View File

@ -1,4 +1,4 @@
use criterion::{criterion_group, criterion_main, Criterion};
use criterion::{criterion_main, Criterion};
use nickel_lang_utilities::{ncl_bench_group, EvalMode};
use pprof::criterion::{Output, PProfProfiler};

View File

@ -1,29 +1,20 @@
use criterion::{criterion_group, criterion_main, Criterion};
use nickel_lang_utilities::{bench_terms, Bench, EvalMode};
use nickel_lang_utilities::{ncl_bench_group, EvalMode};
use pprof::criterion::{Output, PProfProfiler};
pub fn benches() {
let config =
Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None)));
let mut criterion: Criterion<_> = config.configure_from_args();
let target = bench_terms(vec![
Bench::bench_args(
"countLetters",
env!("CARGO_MANIFEST_DIR"),
"records/countLetters",
None,
vec![String::from(include_str!("lorem.txt"))],
EvalMode::DeepSeq,
),
Bench::bench_args(
"merge",
env!("CARGO_MANIFEST_DIR"),
"records/merge",
None,
vec![String::from("500"), String::from("50")],
EvalMode::DeepSeq,
),
]);
target(&mut criterion);
ncl_bench_group! {
name = benches;
config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None)));
{
name = "countLetters",
path = "records/countLetters",
args = (include_str!("lorem.txt")),
eval_mode = EvalMode::DeepSeq,
}, {
name = "merge",
path = "records/merge",
args = (500, 50),
eval_mode = EvalMode::DeepSeq,
}
}
criterion_main!(benches);

View File

@ -187,7 +187,7 @@ macro_rules! ncl_bench {
$( base_dir = $base_dir:literal, )?
path = $subpath:literal,
$( subtest = $subtest:literal, )?
$( args = ( $( $arg:literal ),* ),)?
$( args = ( $( $arg:expr ),* ),)?
$( eval_mode = $eval_mode:path,)?
$( pred = $pred:expr,)?
} => {