Follow-up to #119 and the merged #130 measurements. The 2026 mirror font map contains 46,659 lines; dvipdfmx spends about 78% of non-idle repeated-conversion samples under map loading, including 41% under hash-table insertion.
Experiment: add a font-map-only auxiliary lookup index and bucket tails, retaining the upstream 503-bucket linked lists as the authoritative record/iteration order. Other dvipdfmx tables are unchanged. No font/PDF object survives heap reset; the index lives and dies with one font-map table.
Before promotion:
- Differential-test insertion, replacement, deletion, lookup, collision-heavy and binary keys, iteration, destructor order, clear/reinitialize, and allocation-failure fallback against the exact pinned upstream implementation, with sanitizers.
- Compare PDF/diagnostic/aux/SyncTeX and resolver behavior using unchanged baseline formats/mirrors on 2025 and 2026. Include local maps, mapline overrides, subfonts, missing/corrupt fonts, repeated and changed documents.
- Paired unprofiled browser measurements, including preparation and first/repeat/body/preamble scenarios. Predeclared success target: >=10% median dvipdfmx-stage improvement and >=5% median warm end-to-end XeLaTeX improvement, no >5% cold regression without investigation, and <2 MiB additional retained index memory for the measured mirror map.
- No engine release or CorTeX adoption until standalone source/artifact/compatibility gates pass. WasmTex has no dependency on CorTeX code or checkout.
Work starts from origin/main 69b8b62 in branch perf/dvipdfmx-fontmap-index; failed experiments remain documented rather than being silently adopted.
Follow-up to #119 and the merged #130 measurements. The 2026 mirror font map contains 46,659 lines; dvipdfmx spends about 78% of non-idle repeated-conversion samples under map loading, including 41% under hash-table insertion.
Experiment: add a font-map-only auxiliary lookup index and bucket tails, retaining the upstream 503-bucket linked lists as the authoritative record/iteration order. Other dvipdfmx tables are unchanged. No font/PDF object survives heap reset; the index lives and dies with one font-map table.
Before promotion:
Work starts from origin/main
69b8b62in branchperf/dvipdfmx-fontmap-index; failed experiments remain documented rather than being silently adopted.