microsoft / STL

MSVC's implementation of the C++ Standard Library.
Other
9.88k stars 1.45k forks source link

Vectorize `basic_string::find_first_of` #4744

Open AlexGuteniev opened 6 days ago

AlexGuteniev commented 6 days ago

Resloves #4497

Benchmark main this
bm<AlgType::str_member, char>/2/3 5.52 ns 5.84 ns
bm<AlgType::str_member, char>/7/4 12.7 ns 12.7 ns
bm<AlgType::str_member, char>/9/3 13.1 ns 11.4 ns
bm<AlgType::str_member, char>/22/5 16.9 ns 11.9 ns
bm<AlgType::str_member, char>/58/2 30.9 ns 13.1 ns
bm<AlgType::str_member, char>/102/4 44.8 ns 15.6 ns
bm<AlgType::str_member, char>/325/1 101 ns 36.0 ns
bm<AlgType::str_member, char>/1011/11 269 ns 100 ns
bm<AlgType::str_member, char>/1502/23 400 ns 316 ns
bm<AlgType::str_member, char>/3056/7 763 ns 286 ns
bm<AlgType::str_member, wchar_t>/2/3 6.11 ns 14.2 ns
bm<AlgType::str_member, wchar_t>/7/4 12.2 ns 16.2 ns
bm<AlgType::str_member, wchar_t>/9/3 12.6 ns 14.6 ns
bm<AlgType::str_member, wchar_t>/22/5 17.3 ns 15.7 ns
bm<AlgType::str_member, wchar_t>/58/2 36.1 ns 20.0 ns
bm<AlgType::str_member, wchar_t>/102/4 55.7 ns 27.2 ns
bm<AlgType::str_member, wchar_t>/325/1 137 ns 66.9 ns
bm<AlgType::str_member, wchar_t>/1011/11 392 ns 400 ns
bm<AlgType::str_member, wchar_t>/1502/23 576 ns 587 ns
bm<AlgType::str_member, wchar_t>/3056/7 1142 ns 574 ns
bm<AlgType::str_member, wchar_t, L'\x03B1'>/2/3 7.12 ns 15.9 ns
bm<AlgType::str_member, wchar_t, L'\x03B1'>/7/4 24.3 ns 27.2 ns
bm<AlgType::str_member, wchar_t, L'\x03B1'>/9/3 26.3 ns 14.6 ns
bm<AlgType::str_member, wchar_t, L'\x03B1'>/22/5 63.3 ns 15.7 ns
bm<AlgType::str_member, wchar_t, L'\x03B1'>/58/2 61.3 ns 19.5 ns
bm<AlgType::str_member, wchar_t, L'\x03B1'>/102/4 134 ns 26.9 ns
bm<AlgType::str_member, wchar_t, L'\x03B1'>/325/1 141 ns 66.2 ns
bm<AlgType::str_member, wchar_t, L'\x03B1'>/1011/11 2953 ns 429 ns
bm<AlgType::str_member, wchar_t, L'\x03B1'>/1502/23 9272 ns 908 ns
bm<AlgType::str_member, wchar_t, L'\x03B1'>/3056/7 5572 ns 560 ns