diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-01-15 16:53:02 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-01-15 16:53:02 +0100 |
| commit | d763f0f5a6a700352ee8926c15c8e58624f705c9 (patch) | |
| tree | d287edfdab9793a796404516c7313689e4e69964 /bench/src/bench.rs | |
| parent | 0f0416054f263b80ccec1a463ce4ab20913bdf71 (diff) | |
Split state and scopes, less ref-counting 🔀
Diffstat (limited to 'bench/src/bench.rs')
| -rw-r--r-- | bench/src/bench.rs | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/bench/src/bench.rs b/bench/src/bench.rs index 58ecf9fd..e1ae838a 100644 --- a/bench/src/bench.rs +++ b/bench/src/bench.rs @@ -1,14 +1,12 @@ -use std::cell::RefCell; -use std::rc::Rc; - use criterion::{criterion_group, criterion_main, Criterion}; -use fontdock::fs::{FsIndex, FsSource}; +use fontdock::fs::FsIndex; use typst::env::{Env, ResourceLoader}; use typst::eval::{eval, State}; use typst::export::pdf; -use typst::font::FontLoader; +use typst::font::FsIndexExt; use typst::layout::layout; +use typst::library; use typst::parse::parse; use typst::typeset; @@ -25,25 +23,24 @@ fn benchmarks(c: &mut Criterion) { let mut index = FsIndex::new(); index.search_dir(FONT_DIR); - let (files, descriptors) = index.into_vecs(); - let env = Rc::new(RefCell::new(Env { - fonts: FontLoader::new(Box::new(FsSource::new(files)), descriptors), + let mut env = Env { + fonts: index.into_dynamic_loader(), resources: ResourceLoader::new(), - })); + }; - // Prepare intermediate results and run warm. + let scope = library::new(); let state = State::default(); + + // Prepare intermediate results and run warm. let syntax_tree = parse(COMA).output; - let layout_tree = eval(&syntax_tree, Rc::clone(&env), state.clone()).output; - let frames = layout(&layout_tree, Rc::clone(&env)); + let layout_tree = eval(&syntax_tree, &mut env, &scope, state.clone()).output; + let frames = layout(&layout_tree, &mut env); // Bench! bench!("parse-coma": parse(COMA)); - bench!("eval-coma": eval(&syntax_tree, Rc::clone(&env), state.clone())); - bench!("layout-coma": layout(&layout_tree, Rc::clone(&env))); - bench!("typeset-coma": typeset(COMA, Rc::clone(&env), state.clone())); - - let env = env.borrow(); + bench!("eval-coma": eval(&syntax_tree, &mut env, &scope, state.clone())); + bench!("layout-coma": layout(&layout_tree, &mut env)); + bench!("typeset-coma": typeset(COMA, &mut env, &scope, state.clone())); bench!("export-pdf-coma": pdf::export(&frames, &env)); } |
