Ran through the RC2 dataset as used in previous tickets. No additional detectors were lost due to slight changes in the algorithm. Below are the timings in seconds.
Mean: 1.271 STD: 0.499
Percentiles: 5%, 25%, 50%, 75%, 95%
0.870, 1.039, 1.194, 1.407, 1.884
Min: 0.635, Max: 28.494
Compared to the previous timings in
DM-32010, this represents a ~60% reduction in the mean time and a ~10 fold decrease in scatter.
The code as committed and tested represents a slight change in algorithm. I've moved the python intermediate_verify step outside of the the main loop over reference candidates (now in the C++ layer). This was done as coding the least squares fit in C++ would take to long compared to the time I have left on my employment. There are no additional failures caused by this change.
There are likely specific speed ups still available in the code, specifically in the create_sorted_arrays method. That method uses std::vectors and push back to create it's arrays which is inefficient for creating the sorted distance array and it's argsort.