GP3: Select Alternate: Speedup
Implementation change to better use cache by using simpler operation in main loop.
Also avoiding module operations from the loop over all points (module is costly).
On small drawings, the increase can reach 2x.
- Small size of curves / low amount of points (50 curves, size = curve_index) (50 repeats):
- Timer 'Old': (Average: 2277 ns, Min: 1900 ns, Last: 2000 ns).
- Timer 'New': (Average: 1314 ns, Min: 1000 ns, Last: 1200 ns).
- 5000 curves, 1000 points. Multithreading is used (50 repeats):
- Timer 'Old': (Average: 1.1 ms, Min: 0.9 ms, Last: 1.1 ms).
- Timer 'New': (Average: 0.7 ms, Min: 0.5 ms, Last: 0.6 ms).
- 5000 curves, 1000 points. Multithreading is disabled (50 repeats):
- Timer 'Old': (Average: 9.2 ms, Min: 5.6 ms, Last: 15.5 ms).
- Timer 'New': (Average: 7.7 ms, Min: 4.4 ms, Last: 8.5 ms).
Benchmark branch: 1a7d622483/source/blender/editors/curves/intern/curves_selection.cc (L267)
Pull Request: https://projects.blender.org/blender/blender/pulls/110279