swc/crates/swc_ecma_transforms_base/benches/base.rs

74 lines
2.0 KiB
Rust
Raw Normal View History

#[global_allocator]
static GLOBAL: System = System;
use std::alloc::System;
use criterion::{black_box, criterion_group, criterion_main, Bencher, Criterion};
use swc_common::{chain, FileName, Mark};
use swc_ecma_parser::{Parser, StringInput, Syntax};
use swc_ecma_transforms_base::helpers;
2020-07-23 20:18:22 +03:00
use swc_ecma_visit::FoldWith;
2020-08-26 14:50:18 +03:00
static SOURCE: &str = include_str!("assets/AjaxObservable.ts");
/// Benchmark a folder
macro_rules! tr {
($b:expr, $tr:expr) => {
let _ = ::testing::run_test(false, |cm, _| {
let fm = cm.new_source_file(FileName::Anon, SOURCE.into());
2020-08-26 14:50:18 +03:00
let mut parser = Parser::new(
Syntax::Typescript(Default::default()),
StringInput::from(&*fm),
None,
);
let module = parser.parse_module().map_err(|_| ()).unwrap();
helpers::HELPERS.set(&Default::default(), || {
let mut tr = $tr();
$b.iter(|| {
let module = module.clone();
black_box(module.fold_with(&mut tr))
});
Ok(())
})
});
};
}
fn resolver(b: &mut Bencher) {
tr!(b, || swc_ecma_transforms_base::resolver(
Mark::new(),
Mark::new(),
false
));
}
fn fixer(b: &mut Bencher) {
tr!(b, || swc_ecma_transforms_base::fixer::fixer(None));
}
fn hygiene(b: &mut Bencher) {
2022-01-13 17:06:11 +03:00
tr!(b, swc_ecma_transforms_base::hygiene::hygiene);
}
fn resolver_with_hygiene(b: &mut Bencher) {
tr!(b, || chain!(
swc_ecma_transforms_base::resolver(Mark::new(), Mark::new(), false),
swc_ecma_transforms_base::hygiene::hygiene()
));
}
fn bench_cases(c: &mut Criterion) {
2022-04-17 21:36:15 +03:00
c.bench_function("es/transforms/base/resolver", resolver);
c.bench_function("es/transforms/base/fixer", fixer);
c.bench_function("es/transforms/base/hygiene", hygiene);
c.bench_function(
"es/transforms/base/resolver_with_hygiene",
resolver_with_hygiene,
);
}
criterion_group!(benches, bench_cases);
criterion_main!(benches);