mirror of
https://github.com/typst/typst
synced 2025-05-14 17:15:28 +08:00
Add end-to-end typesetting benchmark 🖊
This commit is contained in:
parent
77dac270a8
commit
fd9959fd04
@ -34,6 +34,7 @@ required-features = ["fs"]
|
|||||||
harness = false
|
harness = false
|
||||||
|
|
||||||
[[bench]]
|
[[bench]]
|
||||||
name = "bench-parsing"
|
name = "benchmarks"
|
||||||
path = "benches/bench_parsing.rs"
|
path = "benches/benchmarks.rs"
|
||||||
|
required-features = ["fs"]
|
||||||
harness = false
|
harness = false
|
||||||
|
@ -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);
|
|
50
benches/benchmarks.rs
Normal file
50
benches/benchmarks.rs
Normal file
@ -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);
|
Loading…
x
Reference in New Issue
Block a user