Repository navigation
Improve performance of vector data operations - #4781
Conversation
There was a problem hiding this comment.
All reported issues were addressed across 27 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
Performance Benchmark Results
|
…their shared rotation cache
…once, and find free points with a bitmap
…ernal geometry cache attribute
c6c394b to
a31c6f5
Compare
* Keep taken IDs across Combine Paths concatenations so merging stays linear * Use loose control-box bounds for transformed click targets and reset their shared rotation cache * Compose group click targets from child layers instead of baking descendant copies * Share outline and click target geometry, build combined target paths once, and find free points with a bitmap * Share List element storage behind an Arc with copy-on-write * Cache vector contours as an item attribute shared by rendering and click targets * Cache mesh faces in the geometry cache alongside contours * Share click target geometry through the geometry cache and place it by transform * Address review feedback on click targets, bounds, naming, and the internal geometry cache attribute
Vector::concattakes aTakenIdsset that carries over between calls, so merging N vectors is no longer O(N²).List: elements sit behind anArc, so clones share them until a write.Arc<TargetPath>plus a placement transform. Moving it only composes the transform. Bounds are cached per normalized linear part, so pan and zoom reuse one entry.Performance
Changes for a single edit (so with warm caches) for vello and svg. We don't have an equavalent test in the ci yet. this models the perf of creating a new shape on top of the artwork.
Ablation (Vello / SVG, each step compared with the previous one)
Listcopy-on-write