Add a Path tool action to destructively merge nearby points by distance
- If there are selected points which are close under certain threshold, then the button becomes active and allows to merge those points into a single point.
- If vector meshes is enabled, then only two points which are endpoints of paths can be joined into one.
- If vector meshes is not enabled, then any number of points which are under the threshold can be merged into one.
- One assumption is that all the points belong to the same layer.
Performance Benchmark Results
🔧 Graph Compilation
compile_demo_art_iai::compile_group::compile_to_proto with_setup_0:load_from_name(isometric-fountain)
Instructions: 27,599,070 (master) → 27,602,243 (HEAD) : $$\color{red}+0.01\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 354,763| 354,963 +0.06%
D1mw 120,484| 120,374 -0.09%
DLmr 36,407| 36,406 -0.00%
DLmw 49,482| 49,471 -0.02%
Dr 6,694,322| 6,694,688 +0.01%
Dw 4,733,899| 4,733,839 -0.00%
EstimatedCycles 43,726,589| 43,730,068 +0.01%
I1mr 48,840| 48,840 +0.00%
ILmr 876| 876 +0.00%
Ir 27,599,070| 27,602,243 +0.01%
L1hits 38,503,204| 38,506,593 +0.01%
LLhits 437,322| 437,424 +0.02%
RamHits 86,765| 86,753 -0.01%
TotalRW 39,027,291| 39,030,770 +0.01%
compile_demo_art_iai::compile_group::compile_to_proto with_setup_1:load_from_name(painted-dreams)
Instructions: 14,831,009 (master) → 14,830,833 (HEAD) : $$\color{lime}-0.00\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 181,889| 181,924 +0.02%
D1mw 62,698| 62,686 -0.02%
DLmr 1,494| 1,491 -0.20%
DLmw 22,569| 22,565 -0.02%
Dr 3,568,434| 3,568,410 -0.00%
Dw 2,523,582| 2,523,574 -0.00%
EstimatedCycles 22,742,423| 22,742,097 -0.00%
I1mr 24,225| 24,225 +0.00%
ILmr 742| 742 +0.00%
Ir 14,831,009| 14,830,833 -0.00%
L1hits 20,654,213| 20,653,982 -0.00%
LLhits 244,007| 244,037 +0.01%
RamHits 24,805| 24,798 -0.03%
TotalRW 20,923,025| 20,922,817 -0.00%
compile_demo_art_iai::compile_group::compile_to_proto with_setup_2:load_from_name(procedural-string-lights)
Instructions: 3,117,173 (master) → 3,116,618 (HEAD) : $$\color{lime}-0.02\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 37,201| 37,196 -0.01%
D1mw 11,968| 11,967 -0.01%
DLmr 21| 21 +0.00%
DLmw 3,286| 3,288 +0.06%
Dr 746,734| 746,678 -0.01%
Dw 527,185| 527,127 -0.01%
EstimatedCycles 4,729,302| 4,728,703 -0.01%
I1mr 5,181| 5,182 +0.02%
ILmr 720| 721 +0.14%
Ir 3,117,173| 3,116,618 -0.02%
L1hits 4,336,742| 4,336,078 -0.02%
LLhits 50,323| 50,315 -0.02%
RamHits 4,027| 4,030 +0.07%
TotalRW 4,391,092| 4,390,423 -0.02%
compile_demo_art_iai::compile_group::compile_to_proto with_setup_3:load_from_name(parametric-dunescape)
Instructions: 14,896,135 (master) → 14,897,500 (HEAD) : $$\color{red}+0.01\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 195,110| 194,947 -0.08%
D1mw 68,579| 68,574 -0.01%
DLmr 157| 157 +0.00%
DLmw 17,463| 17,470 +0.04%
Dr 3,584,643| 3,584,745 +0.00%
Dw 2,558,343| 2,558,390 +0.00%
EstimatedCycles 22,729,013| 22,730,099 +0.00%
I1mr 20,274| 20,275 +0.00%
ILmr 848| 849 +0.12%
Ir 14,896,135| 14,897,500 +0.01%
L1hits 20,755,158| 20,756,839 +0.01%
LLhits 265,495| 265,320 -0.07%
RamHits 18,468| 18,476 +0.04%
TotalRW 21,039,121| 21,040,635 +0.01%
compile_demo_art_iai::compile_group::compile_to_proto with_setup_4:load_from_name(red-dress)
Instructions: 33,610,819 (master) → 33,609,339 (HEAD) : $$\color{lime}-0.00\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 433,669| 433,478 -0.04%
D1mw 143,305| 143,283 -0.02%
DLmr 52,357| 52,351 -0.01%
DLmw 57,448| 57,442 -0.01%
Dr 8,095,898| 8,095,628 -0.00%
Dw 5,736,047| 5,735,969 -0.00%
EstimatedCycles 53,285,296| 53,282,290 -0.01%
I1mr 53,619| 53,620 +0.00%
ILmr 867| 868 +0.12%
Ir 33,610,819| 33,609,339 -0.00%
L1hits 46,812,171| 46,810,555 -0.00%
LLhits 519,921| 519,720 -0.04%
RamHits 110,672| 110,661 -0.01%
TotalRW 47,442,764| 47,440,936 -0.00%
compile_demo_art_iai::compile_group::compile_to_proto with_setup_5:load_from_name(valley-of-spires)
Instructions: 21,283,951 (master) → 21,284,060 (HEAD) : $$\color{red}+0.00\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 266,803| 266,743 -0.02%
D1mw 84,804| 84,722 -0.10%
DLmr 18,767| 18,763 -0.02%
DLmw 42,194| 42,189 -0.01%
Dr 5,153,961| 5,154,026 +0.00%
Dw 3,641,950| 3,642,005 +0.00%
EstimatedCycles 33,484,062| 33,483,487 -0.00%
I1mr 36,063| 36,064 +0.00%
ILmr 823| 824 +0.12%
Ir 21,283,951| 21,284,060 +0.00%
L1hits 29,692,192| 29,692,562 +0.00%
LLhits 325,886| 325,753 -0.04%
RamHits 61,784| 61,776 -0.01%
TotalRW 30,079,862| 30,080,091 +0.00%
🔄 Executor Update
update_executor_iai::update_group::update_executor with_setup_0:setup_update_executor(isometric-fountain)
Instructions: 40,535,967 (master) → 40,561,789 (HEAD) : $$\color{red}+0.06\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 418,155| 420,608 +0.59%
D1mw 100,012| 100,115 +0.10%
DLmr 15,632| 15,627 -0.03%
DLmw 27,742| 28,126 +1.38%
Dr 10,260,497| 10,264,205 +0.04%
Dw 7,037,402| 7,038,094 +0.01%
EstimatedCycles 61,339,566| 61,392,192 +0.09%
I1mr 31,198| 31,408 +0.67%
ILmr 234| 233 -0.43%
Ir 40,535,967| 40,561,789 +0.06%
L1hits 57,284,501| 57,311,957 +0.05%
LLhits 505,757| 508,145 +0.47%
RamHits 43,608| 43,986 +0.87%
TotalRW 57,833,866| 57,864,088 +0.05%
update_executor_iai::update_group::update_executor with_setup_1:setup_update_executor(painted-dreams)
Instructions: 22,419,146 (master) → 22,412,196 (HEAD) : $$\color{lime}-0.03\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 217,575| 216,903 -0.31%
D1mw 52,776| 52,713 -0.12%
DLmr 475| 447 -5.89%
DLmw 9,456| 9,483 +0.29%
Dr 5,635,138| 5,633,663 -0.03%
Dw 3,878,650| 3,876,602 -0.05%
EstimatedCycles 33,373,130| 33,361,825 -0.03%
I1mr 13,873| 14,400 +3.80%
ILmr 179| 180 +0.56%
Ir 22,419,146| 22,412,196 -0.03%
L1hits 31,648,710| 31,638,445 -0.03%
LLhits 274,114| 273,906 -0.08%
RamHits 10,110| 10,110 +0.00%
TotalRW 31,932,934| 31,922,461 -0.03%
update_executor_iai::update_group::update_executor with_setup_2:setup_update_executor(procedural-string-lights)
Instructions: 4,853,247 (master) → 4,565,288 (HEAD) : $$\color{lime}-5.93\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 48,160| 39,594 -17.79%
D1mw 11,979| 11,865 -0.95%
DLmr 0| 0 +0.00%
DLmw 1,105| 1,099 -0.54%
Dr 1,215,264| 1,137,441 -6.40%
Dw 831,965| 781,812 -6.03%
EstimatedCycles 7,202,662| 6,752,009 -6.26%
I1mr 5,800| 5,838 +0.66%
ILmr 176| 177 +0.57%
Ir 4,853,247| 4,565,288 -5.93%
L1hits 6,834,537| 6,427,244 -5.96%
LLhits 64,658| 56,021 -13.36%
RamHits 1,281| 1,276 -0.39%
TotalRW 6,900,476| 6,484,541 -6.03%
update_executor_iai::update_group::update_executor with_setup_3:setup_update_executor(parametric-dunescape)
Instructions: 18,657,676 (master) → 18,649,516 (HEAD) : $$\color{lime}-0.04\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 176,318| 176,100 -0.12%
D1mw 46,618| 46,532 -0.18%
DLmr 5| 7 +40.00%
DLmw 4,120| 4,143 +0.56%
Dr 4,678,119| 4,676,264 -0.04%
Dw 3,239,698| 3,237,775 -0.06%
EstimatedCycles 27,635,207| 27,622,841 -0.04%
I1mr 9,705| 9,722 +0.18%
ILmr 180| 179 -0.56%
Ir 18,657,676| 18,649,516 -0.04%
L1hits 26,342,852| 26,331,201 -0.04%
LLhits 228,336| 228,025 -0.14%
RamHits 4,305| 4,329 +0.56%
TotalRW 26,575,493| 26,563,555 -0.04%
update_executor_iai::update_group::update_executor with_setup_4:setup_update_executor(red-dress)
Instructions: 50,527,694 (master) → 50,507,695 (HEAD) : $$\color{lime}-0.04\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 520,368| 521,164 +0.15%
D1mw 128,416| 128,153 -0.20%
DLmr 32,543| 32,748 +0.63%
DLmw 42,760| 42,346 -0.97%
Dr 12,922,780| 12,918,532 -0.03%
Dw 8,973,235| 8,965,042 -0.09%
EstimatedCycles 77,430,233| 77,392,581 -0.05%
I1mr 35,157| 34,866 -0.83%
ILmr 389| 392 +0.77%
Ir 50,527,694| 50,507,695 -0.04%
L1hits 71,739,768| 71,707,086 -0.05%
LLhits 608,249| 608,697 +0.07%
RamHits 75,692| 75,486 -0.27%
TotalRW 72,423,709| 72,391,269 -0.04%
update_executor_iai::update_group::update_executor with_setup_5:setup_update_executor(valley-of-spires)
Instructions: 32,313,547 (master) → 32,313,320 (HEAD) : $$\color{lime}-0.00\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 332,222| 333,354 +0.34%
D1mw 81,890| 81,721 -0.21%
DLmr 8,132| 8,111 -0.26%
DLmw 19,079| 18,451 -3.29%
Dr 8,178,513| 8,179,980 +0.02%
Dw 5,623,242| 5,626,233 +0.05%
EstimatedCycles 48,691,570| 48,680,525 -0.02%
I1mr 24,395| 24,518 +0.50%
ILmr 197| 192 -2.54%
Ir 32,313,547| 32,313,320 -0.00%
L1hits 45,676,795| 45,679,940 +0.01%
LLhits 411,099| 412,839 +0.42%
RamHits 27,408| 26,754 -2.39%
TotalRW 46,115,302| 46,119,533 +0.01%
🚀 Render: Cold Execution
run_once_iai::run_once_group::run_once with_setup_0:setup_run_once(isometric-fountain)
Instructions: 20,732,309 (master) → 20,696,512 (HEAD) : $$\color{lime}-0.17\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 233,314| 231,698 -0.69%
D1mw 47,674| 48,118 +0.93%
DLmr 3,062| 2,967 -3.10%
DLmw 11,854| 11,843 -0.09%
Dr 5,265,818| 5,260,390 -0.10%
Dw 3,546,027| 3,541,808 -0.12%
EstimatedCycles 31,729,910| 31,676,290 -0.17%
I1mr 117,236| 117,159 -0.07%
ILmr 4,846| 4,846 +0.00%
Ir 20,732,309| 20,696,512 -0.17%
L1hits 29,145,930| 29,101,735 -0.15%
LLhits 378,462| 377,319 -0.30%
RamHits 19,762| 19,656 -0.54%
TotalRW 29,544,154| 29,498,710 -0.15%
run_once_iai::run_once_group::run_once with_setup_1:setup_run_once(painted-dreams)
Instructions: 235,311,178 (master) → 235,331,501 (HEAD) : $$\color{red}+0.01\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 757,613| 757,818 +0.03%
D1mw 326,486| 326,256 -0.07%
DLmr 7,674| 7,756 +1.07%
DLmw 58,041| 58,341 +0.52%
Dr 60,100,396| 60,116,351 +0.03%
Dw 38,854,166| 38,869,329 +0.04%
EstimatedCycles 341,382,220|341,443,391 +0.02%
I1mr 149,891| 149,551 -0.23%
ILmr 6,969| 6,960 -0.13%
Ir 235,311,178|235,331,501 +0.01%
L1hits 333,031,750|333,083,556 +0.02%
LLhits 1,161,306| 1,160,568 -0.06%
RamHits 72,684| 73,057 +0.51%
TotalRW 334,265,740|334,317,181 +0.02%
run_once_iai::run_once_group::run_once with_setup_2:setup_run_once(procedural-string-lights)
Instructions: 9,820,797 (master) → 9,616,598 (HEAD) : $$\color{lime}-2.08\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 43,791| 37,757 -13.78%
D1mw 15,607| 15,548 -0.38%
DLmr 243| 246 +1.23%
DLmw 3,938| 3,957 +0.48%
Dr 2,256,783| 2,214,014 -1.90%
Dw 1,580,349| 1,557,573 -1.44%
EstimatedCycles 14,288,361| 13,995,173 -2.05%
I1mr 36,755| 36,822 +0.18%
ILmr 4,013| 4,013 +0.00%
Ir 9,820,797| 9,616,598 -2.08%
L1hits 13,561,776| 13,298,058 -1.94%
LLhits 87,959| 81,911 -6.88%
RamHits 8,194| 8,216 +0.27%
TotalRW 13,657,929| 13,388,185 -1.97%
run_once_iai::run_once_group::run_once with_setup_3:setup_run_once(parametric-dunescape)
Instructions: 25,473,520 (master) → 25,522,744 (HEAD) : $$\color{red}+0.19\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 114,345| 113,703 -0.56%
D1mw 46,619| 45,213 -3.02%
DLmr 539| 539 +0.00%
DLmw 7,836| 7,803 -0.42%
Dr 5,735,760| 5,741,701 +0.10%
Dw 3,442,267| 3,443,407 +0.03%
EstimatedCycles 35,888,555| 35,935,568 +0.13%
I1mr 61,303| 61,283 -0.03%
ILmr 3,223| 3,222 -0.03%
Ir 25,473,520| 25,522,744 +0.19%
L1hits 34,429,280| 34,487,653 +0.17%
LLhits 210,669| 208,635 -0.97%
RamHits 11,598| 11,564 -0.29%
TotalRW 34,651,547| 34,707,852 +0.16%
run_once_iai::run_once_group::run_once with_setup_4:setup_run_once(red-dress)
Instructions: 1,869,472,919 (master) → 1,868,949,005 (HEAD) : $$\color{lime}-0.03\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 1,518,946| 1,510,054 -0.59%
D1mw 706,586| 700,579 -0.85%
DLmr 317,524| 316,937 -0.18%
DLmw 434,332| 433,140 -0.27%
Dr 436,387,747|435,985,272 -0.09%
Dw 279,408,165|279,016,066 -0.14%
EstimatedCycles 2,619,161,469|2,617,724,101 -0.05%
I1mr 569,715| 567,974 -0.31%
ILmr 5,199| 5,234 +0.67%
Ir 1,869,472,919|1,868,949,005 -0.03%
L1hits 2,582,473,584|2,581,171,736 -0.05%
LLhits 2,038,192| 2,023,296 -0.73%
RamHits 757,055| 755,311 -0.23%
TotalRW 2,585,268,831|2,583,950,343 -0.05%
run_once_iai::run_once_group::run_once with_setup_5:setup_run_once(valley-of-spires)
Instructions: 18,418,349 (master) → 18,395,769 (HEAD) : $$\color{lime}-0.12\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 188,934| 188,510 -0.22%
D1mw 41,561| 41,742 +0.44%
DLmr 839| 857 +2.15%
DLmw 9,532| 9,524 -0.08%
Dr 4,574,790| 4,569,472 -0.12%
Dw 3,070,469| 3,066,941 -0.11%
EstimatedCycles 27,752,096| 27,719,210 -0.12%
I1mr 90,827| 90,645 -0.20%
ILmr 3,069| 3,067 -0.07%
Ir 18,418,349| 18,395,769 -0.12%
L1hits 25,742,286| 25,711,285 -0.12%
LLhits 307,882| 307,449 -0.14%
RamHits 13,440| 13,448 +0.06%
TotalRW 26,063,608| 26,032,182 -0.12%
⚡ Render: Cached Execution
run_cached_iai::run_cached_group::run_cached with_setup_0:setup_run_cached(isometric-fountain)
Instructions: 20,651,314 (master) → 20,656,804 (HEAD) : $$\color{red}+0.03\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 251,534| 252,566 +0.41%
D1mw 43,813| 43,742 -0.16%
DLmr 2,882| 2,967 +2.95%
DLmw 782| 815 +4.22%
Dr 5,309,546| 5,310,695 +0.02%
Dw 3,544,304| 3,545,795 +0.04%
EstimatedCycles 31,263,324| 31,278,270 +0.05%
I1mr 115,723| 115,581 -0.12%
ILmr 132| 132 +0.00%
Ir 20,651,314| 20,656,804 +0.03%
L1hits 29,094,094| 29,101,405 +0.03%
LLhits 407,274| 407,975 +0.17%
RamHits 3,796| 3,914 +3.11%
TotalRW 29,505,164| 29,513,294 +0.03%
run_cached_iai::run_cached_group::run_cached with_setup_1:setup_run_cached(painted-dreams)
Instructions: 25,677,218 (master) → 25,706,518 (HEAD) : $$\color{red}+0.11\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 214,691| 216,766 +0.97%
D1mw 52,646| 53,013 +0.70%
DLmr 5,822| 6,045 +3.83%
DLmw 1,707| 2,315 +35.62%
Dr 6,389,531| 6,410,132 +0.32%
Dw 4,429,992| 4,450,930 +0.47%
EstimatedCycles 38,054,159| 38,159,744 +0.28%
I1mr 64,455| 64,482 +0.04%
ILmr 146| 144 -1.37%
Ir 25,677,218| 25,706,518 +0.11%
L1hits 36,164,949| 36,233,319 +0.19%
LLhits 324,117| 325,757 +0.51%
RamHits 7,675| 8,504 +10.80%
TotalRW 36,496,741| 36,567,580 +0.19%
run_cached_iai::run_cached_group::run_cached with_setup_2:setup_run_cached(procedural-string-lights)
Instructions: 9,231,637 (master) → 9,308,309 (HEAD) : $$\color{red}+0.83\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 46,060| 47,940 +4.08%
D1mw 14,177| 14,305 +0.90%
DLmr 5| 5 +0.00%
DLmw 242| 203 -16.12%
Dr 2,178,800| 2,200,650 +1.00%
Dw 1,545,236| 1,558,624 +0.87%
EstimatedCycles 13,345,247| 13,463,207 +0.88%
I1mr 34,389| 34,186 -0.59%
ILmr 122| 122 +0.00%
Ir 9,231,637| 9,308,309 +0.83%
L1hits 12,861,047| 12,971,152 +0.86%
LLhits 94,257| 96,101 +1.96%
RamHits 369| 330 -10.57%
TotalRW 12,955,673| 13,067,583 +0.86%
run_cached_iai::run_cached_group::run_cached with_setup_3:setup_run_cached(parametric-dunescape)
Instructions: 15,381,583 (master) → 15,365,348 (HEAD) : $$\color{lime}-0.11\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 99,414| 99,900 +0.49%
D1mw 32,224| 33,631 +4.37%
DLmr 13| 18 +38.46%
DLmw 673| 657 -2.38%
Dr 3,570,294| 3,548,573 -0.61%
Dw 2,409,247| 2,386,973 -0.92%
EstimatedCycles 22,009,280| 21,956,620 -0.24%
I1mr 24,461| 24,558 +0.40%
ILmr 106| 104 -1.89%
Ir 15,381,583| 15,365,348 -0.11%
L1hits 21,205,025| 21,142,805 -0.29%
LLhits 155,307| 157,310 +1.29%
RamHits 792| 779 -1.64%
TotalRW 21,361,124| 21,300,894 -0.28%
run_cached_iai::run_cached_group::run_cached with_setup_4:setup_run_cached(red-dress)
Instructions: 265,064,683 (master) → 265,157,315 (HEAD) : $$\color{red}+0.03\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 1,408,100| 1,410,946 +0.20%
D1mw 461,310| 460,128 -0.26%
DLmr 473,120| 471,865 -0.27%
DLmw 213,985| 212,682 -0.61%
Dr 67,283,719| 67,291,698 +0.01%
Dw 49,310,357| 49,315,158 +0.01%
EstimatedCycles 411,862,147|411,899,437 +0.01%
I1mr 498,577| 498,955 +0.08%
ILmr 3,943| 3,958 +0.38%
Ir 265,064,683|265,157,315 +0.03%
L1hits 379,290,772|379,394,142 +0.03%
LLhits 1,676,939| 1,681,524 +0.27%
RamHits 691,048| 688,505 -0.37%
TotalRW 381,658,759|381,764,171 +0.03%
run_cached_iai::run_cached_group::run_cached with_setup_5:setup_run_cached(valley-of-spires)
Instructions: 18,742,563 (master) → 18,758,207 (HEAD) : $$\color{red}+0.08\%$$
Detailed metrics
Baselines: master| HEAD
D1mr 204,710| 203,075 -0.80%
D1mw 39,001| 39,167 +0.43%
DLmr 491| 552 +12.42%
DLmw 998| 887 -11.12%
Dr 4,712,759| 4,718,162 +0.11%
Dw 3,133,821| 3,138,034 +0.13%
EstimatedCycles 27,985,549| 28,003,047 +0.06%
I1mr 93,308| 93,219 -0.10%
ILmr 122| 121 -0.82%
Ir 18,742,563| 18,758,207 +0.08%
L1hits 26,252,124| 26,278,942 +0.10%
LLhits 335,408| 333,901 -0.45%
RamHits 1,611| 1,560 -3.17%
TotalRW 26,589,143| 26,614,403 +0.10%
Marking as draft while awaiting:
- [ ] Add to "Action" menu (to be initially added in a separate PR to be merged first)
- [ ] Fix case where a loop from a single segment is merged when its two segment anchors become one
- [ ] Make it work on all selected points but only merge (any number of separate) clumps of those which are mutually nearby one another