mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-28 11:47:21 -06:00
Writer::fresh_id probed prefix-1, prefix-2, ... from 1 on every call, formatting and hashing each candidate, so writing N gradients, clip paths or masks cost O(N^2). Ids are never released, so every number below the last one handed out for a prefix is taken: remember where the search for each prefix stopped and resume there. The ids written are the same as before. examples/still-life.vectorcraft (12k gradients, 6.3 MB SVG) exported in about 8.6 s (median); it now takes about 0.15 s. Output is byte-identical for every document in examples/. Add crates/engine/examples/export_bench.rs to time document.export on the example documents, and a test pinning the generated id sequence when object names already take some of the numbers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>