Repository navigation
perf(analysis): Erase and Update work on several cores (#1252) - #1744
Conversation
opengeos#1252 step 2, Erase and Update. Their erase/update zones come from `overlay_zones_on` (on several cores since the overlay tools), and each input feature's part outside the zones is now cut on its own on `parallel::try_map_on`, in `outside_each`. The output rows are made in order on the calling thread, so the output is the same as on one thread, bit for bit. Cancel is looked at, and progress counted, feature by feature as before; one thread in the browser and below the usual threshold of features.
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
Code reviewReviewed the single changed file, Bugs: none found. I checked:
Security: none found. Performance: none found. The PR's timing table (Erase 6.39 s to 0.73 s, Update 6.25 s to 0.72 s on 16 threads) is not verified here. Quality (low confidence, for the release quality pass):
AGENTS.md: the change follows the rules. Threads come from I did not post inline comments because no finding warranted one. Prior review threads: none exist on this PR, so there were no earlier concerns to skip. Change sizeCompared with base: the whole PR against main (merge base 3da5b83 to PR head 33fed9c).
|
📖 Docs preview
GitHub Pages takes a minute or two to publish a new commit. |
|
Thanks. Declining both quality points:
(Edited: an earlier version wrongly said |
#1252 step 2, second part: Erase and Update work on several cores. It follows the overlay tools (#1740).
Measured in a release build on a Xeon Silver 4114 (40 threads), with the same data as #1740: 100,000 input polygons against 20,000 erase/update polygons (64-vertex circles, overlapping):
How
overlay_zones_on, which perf(analysis): Intersect, Identity, Union and Symmetrical Difference work on several cores (#1252) #1740 already made work on several cores.parallel::try_map_on, in a new helperoutside_eachthat both tools share. The cut (outside) is the same code as before.The #1252 rules hold:
PARALLEL_FEATURES) and in the browser;rustgis_data::threads;Tests
erase_and_update_on_several_threads_are_on_oneruns Erase (on polygons, lines and points) and Update on 1, 2, 7 and 16 threads, and compares every row's geometry and attributes. Its data covers 600 input features against 200 polygons, erase/update features of two overlapping parts, and input features without geometry. The existing Erase and Update tests pass unchanged.No visible UI change.
Summary by CodeRabbit