The patch is now passing all tests and is pending a couple review decisions from emilio.
I updated the spreadsheet with new data, which I separated for the initial cold startup with a new profile, and 3 runs with the same profile averaged.
== New profile:
Count: 956 -> 786 (-18%)
Sum: 671661 -> 403094 (-40%)
Average: 702 -> 512 (-28%)
Min: 255 -> 148 (-42%)
Max: 4595 -> 11901 (150%)
Stdev: 497 -> 986 (98%)
The count drops thanks to the change in how we calculate likely subtags (without having to parse the output into a new Locale).
The average and min drops, which comes from better performance (already measured before).
The combination of the two impacts the total time that the parsing takes, with 40% win, which is really nice!
Max goes up - the first parsing takes significantly longer with Rust than C++. I'm wondering if it is because that becomes the first point where we load gecko-rust lib? In result stdev goes up.
I'm not super worried about it, because majority of parsings are now much faster, and the total numbers are very good.
It still may be worth investigating why the max goes up.
== Old profile (avg. of 3 runs)
Count: 340 -> 274 (-20%)
Sum: 238151 -> 144606 (-39%)
Average: 523 -> 394 (-25%)
Min: 212 -> 112 (-47%)
Max: 10340 -> 9618 (-7%)
Stdev: 606 -> 812 (33%)
Here we can see that the total count stays 20% lower, total time remains 40% lower, average remains 25% lower and min remains 45% lower!
Max is now lower by 7%, which makes me think that the new profile max may have been a fluke. Stdev is still a little bit higher.
All in all, I think it looks really good!