CamWight
bcdbb91f26
Assemblies: one children-by-parent index for the occurrence walk ( #12173 )
...
Document::placements scanned every occurrence for each component it visited,
so its cost was placements times occurrences, on every world placement. The
new OccurrenceTree (crates/doc/src/occurrence_tree.rs) lists each component's
children once, in one pass and in document order; placements walks it with
the same order, caps and stop behaviour, through placements_with, which takes
each occurrence's transform from the caller. inside_component reads the same
index instead of scanning per component.
Tests compare the walk with the scanning one on 13 shapes and on hostile
generated documents, at its caps, in document order and with a given
transform. Release, 97,540 placements: about 120 ms -> 15.5 ms, the same in
either run order (docs/perf.md).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-05 19:39:35 +00:00
..
2026-11-05 18:31:55 +00:00
2026-11-05 18:38:42 +00:00
2026-10-20 22:43:30 +00:00
2026-10-24 14:21:59 +00:00
2026-11-05 15:31:53 +00:00
2026-10-19 17:45:57 -04:00
2026-10-30 19:22:58 +00:00
2026-10-19 16:11:38 -04:00
2026-11-05 02:58:56 +00:00
2026-11-04 19:42:01 +00:00
2026-11-04 21:27:17 +00:00
2026-11-04 18:30:31 +00:00
2026-11-04 16:35:28 +00:00
2026-11-04 21:23:25 +00:00
2026-10-27 22:41:40 +00:00
2026-10-27 22:41:40 +00:00
2026-10-27 22:41:40 +00:00
2026-11-02 22:53:32 +00:00
2026-11-04 05:39:04 +00:00
2026-10-14 17:56:21 -04:00
2026-11-05 18:38:54 +00:00
2026-11-04 18:39:52 +00:00
2026-10-29 02:43:49 +00:00
2026-11-05 12:11:07 +00:00
2026-11-03 07:23:17 -05:00
2026-10-18 00:29:12 -04:00
2026-10-18 00:29:12 -04:00
2026-11-02 22:53:32 +00:00
2026-11-05 01:09:18 +00:00
2026-10-16 03:01:00 -04:00
2026-11-05 19:17:37 +00:00
2026-10-20 21:00:56 +02:00
2026-10-26 12:24:38 +00:00
2026-10-26 22:00:56 +00:00
2026-10-24 03:34:21 +00:00
2026-11-02 22:53:32 +00:00
2026-11-04 02:43:36 +00:00
2026-11-03 09:04:26 -05:00
2026-11-02 22:53:32 +00:00
2026-10-19 23:56:48 +00:00
2026-11-04 18:39:52 +00:00
2026-10-22 12:19:09 +00:00
2026-11-05 06:02:13 +00:00
2026-11-02 22:53:32 +00:00
2026-11-03 09:04:26 -05:00
2026-10-26 10:24:30 +00:00
2026-10-19 18:07:32 -04:00
2026-11-04 21:22:49 +00:00
2026-10-28 13:31:16 +00:00
2026-11-05 18:38:54 +00:00
2026-11-05 19:39:35 +00:00
2026-10-24 14:21:59 +00:00
2026-11-04 21:29:23 +00:00
2026-10-18 21:16:11 -04:00
2026-11-05 10:23:20 +00:00
2026-11-03 07:23:17 -05:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:58 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:58 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:58 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:58 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:58 +00:00
2026-10-24 14:21:58 +00:00
2026-10-27 22:41:40 +00:00
2026-10-13 16:33:51 -04:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-30 01:35:12 +00:00
2026-10-24 14:21:59 +00:00
2026-10-28 12:10:31 +00:00
2026-10-27 11:46:54 +00:00
2026-11-04 21:54:45 +00:00
2026-11-05 04:49:46 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-11-05 04:49:46 +00:00
2026-10-29 08:40:51 +00:00
2026-10-29 07:03:24 +00:00
2026-10-24 14:21:58 +00:00
2026-10-24 14:21:58 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:59 +00:00
2026-10-14 10:00:03 -04:00
2026-10-15 13:55:35 -04:00
2026-10-15 18:04:09 -04:00
2026-10-15 18:55:14 -04:00
2026-10-15 19:39:30 -04:00
2026-10-15 13:55:35 -04:00
2026-10-15 19:39:30 -04:00
2026-10-24 14:21:58 +00:00
2026-10-24 14:21:59 +00:00
2026-10-24 14:21:58 +00:00
2026-10-24 14:21:59 +00:00
2026-10-27 11:46:54 +00:00
2026-11-01 18:30:11 +00:00
2026-11-05 03:42:58 +00:00
2026-11-05 04:49:46 +00:00
2026-11-02 22:53:32 +00:00
2026-10-19 17:23:29 -04:00
2026-11-05 01:06:36 +00:00
2026-10-23 13:45:15 +00:00
2026-10-31 19:28:14 +00:00
2026-10-24 14:21:59 +00:00
2026-11-04 23:05:26 +00:00
2026-10-23 23:57:34 +00:00
2026-11-02 22:53:32 +00:00
2026-11-02 22:53:32 +00:00
2026-11-04 02:43:36 +00:00
2026-10-29 03:02:43 +00:00
2026-10-17 04:07:16 -04:00
2026-10-17 04:07:16 -04:00
2026-10-17 04:07:16 -04:00
2026-11-05 18:38:54 +00:00
2026-10-19 16:08:23 -04:00
2026-10-25 02:46:59 +00:00
2026-10-21 23:09:57 +00:00
2026-10-26 06:49:35 +00:00
2026-10-12 17:17:01 -04:00