More detailed introspector timings

This commit is contained in:
Laurenz 2025-07-19 15:27:03 +02:00
parent 187dcc4d3a
commit af173acd59
2 changed files with 20 additions and 9 deletions

View File

@ -13,7 +13,7 @@ use typst_library::foundations::{Content, StyleChain};
use typst_library::introspection::{
Introspector, IntrospectorBuilder, Locator, ManualPageCounter, SplitLocator, TagElem,
};
use typst_library::layout::{FrameItem, Page, PagedDocument, Point, Transform};
use typst_library::layout::{FrameItem, Page, PagedDocument, Point, Position, Transform};
use typst_library::model::DocumentInfo;
use typst_library::routines::{Arenas, Pair, RealizationKind, Routines};
use typst_library::World;
@ -171,15 +171,25 @@ fn introspect_pages(pages: &[Page]) -> Introspector {
// Discover all elements.
let mut elems = Vec::new();
for (i, page) in pages.iter().enumerate() {
handle_page(&mut builder, &mut elems, page, i);
}
builder.finalize(elems)
}
#[typst_macros::time(name = "handle page")]
fn handle_page(
builder: &mut IntrospectorBuilder,
elems: &mut Vec<(Content, Position)>,
page: &Page,
i: usize,
) {
builder.page_numberings.push(page.numbering.clone());
builder.page_supplements.push(page.supplement.clone());
builder.discover_in_frame(
&mut elems,
elems,
&page.frame,
NonZeroUsize::new(1 + i).unwrap(),
Transform::identity(),
);
}
builder.finalize(elems)
}

View File

@ -435,6 +435,7 @@ impl IntrospectorBuilder {
/// Build a complete introspector with all acceleration structures from a
/// list of top-level pairs.
#[typst_macros::time]
pub fn finalize(mut self, root: Vec<Pair>) -> Introspector {
self.locations.reserve(self.seen.len());