/
parser.rs
51 lines (41 loc) · 1.24 KB
/
parser.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
extern crate swc_node_base;
use criterion::{black_box, criterion_group, criterion_main, Bencher, Criterion};
use swc_common::{input::StringInput, FileName};
use swc_css_parser::{lexer::Lexer, parser::Parser};
fn bench_stylesheet(b: &mut Bencher, src: &'static str) {
let _ = ::testing::run_test(false, |cm, _| {
let fm = cm.new_source_file(FileName::Anon, src.into());
b.iter(|| {
let _ = black_box({
let lexer = Lexer::new(StringInput::from(&*fm), Default::default());
let mut parser = Parser::new(lexer, Default::default());
parser.parse_all()
});
});
Ok(())
});
}
fn run(c: &mut Criterion, id: &str, src: &'static str) {
c.bench_function(&format!("css/parser/{}", id), |b| {
bench_stylesheet(b, src);
});
}
fn bench_files(c: &mut Criterion) {
run(
c,
"bootstrap_5_1_3",
include_str!("./files/bootstrap_5_1_3.css"),
);
run(
c,
"foundation_6_7_4",
include_str!("./files/foundation_6_7_4.css"),
);
run(
c,
"tailwind_3_1_1",
include_str!("./files/tailwind_3_1_1.css"),
);
}
criterion_group!(benches, bench_files);
criterion_main!(benches);