corpus: synthetic 20-page prose PDF  (118713 bytes)

api                           spectre (ms)    pymupdf (ms)       speedup
------------------------------------------------------------------------
--- free-function pattern (re-parse each call) ---
words (free)                          4.11            9.89         2.41x
blocks (free)                         3.65            7.57         2.07x
search('fox') (free)                  4.25           10.37         2.44x
toc (free)                            3.61            0.11         0.03x
links (free)                          2.90            0.33         0.11x
annotations (free)                    2.93            0.42         0.14x
images (free)                         3.41            0.55         0.16x
page_info (free)                      2.01            0.78         0.39x
doc_info (free)                       2.18     pymupdf err             -
--- persistent-handle pattern (parse once) ---
words (handle)                        1.62            9.93         6.13x
blocks (handle)                       1.25            6.74         5.42x
search('fox') (handle)                1.68            9.78         5.83x
toc (handle)                          0.00            0.04       134.76x
links (handle)                        0.03            0.16         5.50x
annotations (handle)                  0.02            0.19        10.97x
images (handle)                       0.02            0.29        13.55x
pages (handle)                        0.05            0.55        10.43x
info (handle)                         0.01     pymupdf err             -
