diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-08-19 20:51:36 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-08-19 20:51:36 +0200 |
| commit | fd9959fd04739c1dab2ea1a899a17c94e0892103 (patch) | |
| tree | 91d3a5d65d2a5ff0d98f92007c5a0ecee70eb527 /benches | |
| parent | 77dac270a8a99f24a6fc0eb9e92256bcc07c586c (diff) | |
Add end-to-end typesetting benchmark 🖊
Diffstat (limited to 'benches')
| -rw-r--r-- | benches/bench_parsing.rs | 19 | ||||
| -rw-r--r-- | benches/benchmarks.rs | 50 |
2 files changed, 50 insertions, 19 deletions
diff --git a/benches/bench_parsing.rs b/benches/bench_parsing.rs deleted file mode 100644 index 4a8a7eb2..00000000 --- a/benches/bench_parsing.rs +++ /dev/null @@ -1,19 +0,0 @@ -use criterion::{criterion_group, criterion_main, Criterion}; -use typstc::syntax::parsing::parse; - -// 28 not too dense lines. -const COMA: &str = include_str!("../tests/coma.typ"); - -fn parsing_benchmark(c: &mut Criterion) { - c.bench_function("parse-coma-28-lines", |b| { - b.iter(|| parse(COMA)) - }); - - let long = COMA.repeat(100); - c.bench_function("parse-coma-2800-lines", |b| { - b.iter(|| parse(&long)) - }); -} - -criterion_group!(benches, parsing_benchmark); -criterion_main!(benches); diff --git a/benches/benchmarks.rs b/benches/benchmarks.rs new file mode 100644 index 00000000..f8e0d4b7 --- /dev/null +++ b/benches/benchmarks.rs @@ -0,0 +1,50 @@ +use std::cell::RefCell; +use std::rc::Rc; + +use criterion::{criterion_group, criterion_main, Criterion}; +use fontdock::fs::{FsIndex, FsProvider}; +use fontdock::FontLoader; + +use typstc::font::DynProvider; +use typstc::syntax::parsing::parse; +use typstc::Typesetter; + +const FONT_DIR: &str = "fonts"; + +// 28 not too dense lines. +const COMA: &str = include_str!("../tests/coma.typ"); + +fn parsing_benchmark(c: &mut Criterion) { + c.bench_function("parse-coma-28-lines", |b| { + b.iter(|| parse(COMA)) + }); + + let long = COMA.repeat(100); + c.bench_function("parse-coma-2800-lines", |b| { + b.iter(|| parse(&long)) + }); +} + +fn typesetting_benchmark(c: &mut Criterion) { + let mut index = FsIndex::new(); + index.search_dir(FONT_DIR); + + let (descriptors, files) = index.clone().into_vecs(); + let provider = FsProvider::new(files.clone()); + let dynamic = Box::new(provider) as Box<DynProvider>; + let loader = FontLoader::new(dynamic, descriptors); + let loader = Rc::new(RefCell::new(loader)); + let typesetter = Typesetter::new(loader.clone()); + + c.bench_function("typeset-coma-28-lines", |b| { + b.iter(|| futures_executor::block_on(typesetter.typeset(COMA))) + }); + + let long = COMA.repeat(100); + c.bench_function("typeset-coma-2800-lines", |b| { + b.iter(|| futures_executor::block_on(typesetter.typeset(&long))) + }); +} + +criterion_group!(benches, parsing_benchmark, typesetting_benchmark); +criterion_main!(benches); |
