summaryrefslogtreecommitdiff
path: root/bench/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-01-15 16:53:02 +0100
committerLaurenz <laurmaedje@gmail.com>2021-01-15 16:53:02 +0100
commitd763f0f5a6a700352ee8926c15c8e58624f705c9 (patch)
treed287edfdab9793a796404516c7313689e4e69964 /bench/src
parent0f0416054f263b80ccec1a463ce4ab20913bdf71 (diff)
Split state and scopes, less ref-counting 🔀
Diffstat (limited to 'bench/src')
-rw-r--r--bench/src/bench.rs31
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));
}