Vectorize basic_string::rfind
(the single character overload) by AlexGuteniev · Pull Request #5087 · microsoft/STL (original) (raw)
bm<uint8_t, not_highly_aligned_allocator, Op::FindSized>/8021/3056
37.2 ns
45.8 ns
random variation
bm<uint8_t, not_highly_aligned_allocator, Op::FindSized>/63/62
3.86 ns
3.30 ns
bm<uint8_t, not_highly_aligned_allocator, Op::FindSized>/31/30
6.91 ns
8.26 ns
bm<uint8_t, not_highly_aligned_allocator, Op::FindSized>/15/14
6.05 ns
6.15 ns
bm<uint8_t, not_highly_aligned_allocator, Op::FindSized>/7/6
2.76 ns
3.05 ns
bm<uint8_t, highly_aligned_allocator, Op::FindSized>/8021/3056
44.8 ns
46.6 ns
bm<uint8_t, highly_aligned_allocator, Op::FindSized>/63/62
3.14 ns
3.27 ns
bm<uint8_t, highly_aligned_allocator, Op::FindSized>/31/30
7.56 ns
7.86 ns
bm<uint8_t, highly_aligned_allocator, Op::FindSized>/15/14
5.96 ns
6.39 ns
bm<uint8_t, highly_aligned_allocator, Op::FindSized>/7/6
3.04 ns
2.85 ns
bm<uint8_t, not_highly_aligned_allocator, Op::FindUnsized>/8021/3056
80.5 ns
80.5 ns
bm<uint8_t, not_highly_aligned_allocator, Op::FindUnsized>/63/62
3.90 ns
3.90 ns
bm<uint8_t, not_highly_aligned_allocator, Op::FindUnsized>/31/30
3.31 ns
3.27 ns
bm<uint8_t, not_highly_aligned_allocator, Op::FindUnsized>/15/14
3.04 ns
3.14 ns
bm<uint8_t, not_highly_aligned_allocator, Op::FindUnsized>/7/6
2.29 ns
2.42 ns
bm<uint8_t, highly_aligned_allocator, Op::FindUnsized>/8021/3056
77.3 ns
69.6 ns
random variation
bm<uint8_t, highly_aligned_allocator, Op::FindUnsized>/63/62
2.11 ns
2.13 ns
bm<uint8_t, highly_aligned_allocator, Op::FindUnsized>/31/30
1.53 ns
1.54 ns
bm<uint8_t, highly_aligned_allocator, Op::FindUnsized>/15/14
1.29 ns
1.30 ns
bm<uint8_t, highly_aligned_allocator, Op::FindUnsized>/7/6
1.29 ns
1.29 ns
bm<uint8_t, not_highly_aligned_allocator, Op::Count>/8021/3056
87.7 ns
90.4 ns
bm<uint8_t, not_highly_aligned_allocator, Op::Count>/63/62
4.50 ns
4.52 ns
bm<uint8_t, not_highly_aligned_allocator, Op::Count>/31/30
7.49 ns
7.98 ns
bm<uint8_t, not_highly_aligned_allocator, Op::Count>/15/14
6.20 ns
5.20 ns
bm<uint8_t, not_highly_aligned_allocator, Op::Count>/7/6
3.57 ns
3.29 ns
bm<uint8_t, highly_aligned_allocator, Op::Count>/8021/3056
75.1 ns
75.4 ns
bm<uint8_t, highly_aligned_allocator, Op::Count>/63/62
4.48 ns
4.49 ns
bm<uint8_t, highly_aligned_allocator, Op::Count>/31/30
7.60 ns
7.90 ns
bm<uint8_t, highly_aligned_allocator, Op::Count>/15/14
5.89 ns
5.17 ns
bm<uint8_t, highly_aligned_allocator, Op::Count>/7/6
4.01 ns
3.31 ns
bm<char, not_highly_aligned_allocator, Op::StringFind>/8021/3056
81.0 ns
79.8 ns
bm<char, not_highly_aligned_allocator, Op::StringFind>/63/62
14.1 ns
15.2 ns
bm<char, not_highly_aligned_allocator, Op::StringFind>/31/30
13.3 ns
12.7 ns
bm<char, not_highly_aligned_allocator, Op::StringFind>/15/14
4.95 ns
5.03 ns
bm<char, not_highly_aligned_allocator, Op::StringFind>/7/6
2.71 ns
2.71 ns
bm<char, highly_aligned_allocator, Op::StringFind>/8021/3056
71.6 ns
70.5 ns
bm<char, highly_aligned_allocator, Op::StringFind>/63/62
13.0 ns
12.9 ns
bm<char, highly_aligned_allocator, Op::StringFind>/31/30
12.5 ns
12.1 ns
bm<char, highly_aligned_allocator, Op::StringFind>/15/14
4.85 ns
4.86 ns
bm<char, highly_aligned_allocator, Op::StringFind>/7/6
2.72 ns
2.72 ns
bm<char, not_highly_aligned_allocator, Op::StringRFind>/8021/3056
733 ns
43.4 ns
vectorized
bm<char, not_highly_aligned_allocator, Op::StringRFind>/63/62
17.1 ns
3.77 ns
vectorized
bm<char, not_highly_aligned_allocator, Op::StringRFind>/31/30
9.13 ns
5.81 ns
vectorized
bm<char, not_highly_aligned_allocator, Op::StringRFind>/15/14
6.18 ns
5.07 ns
vectorized
bm<char, not_highly_aligned_allocator, Op::StringRFind>/7/6
3.00 ns
3.10 ns
vectorized
bm<char, highly_aligned_allocator, Op::StringRFind>/8021/3056
731 ns
45.1 ns
vectorized
bm<char, highly_aligned_allocator, Op::StringRFind>/63/62
16.7 ns
3.78 ns
vectorized
bm<char, highly_aligned_allocator, Op::StringRFind>/31/30
9.15 ns
7.25 ns
vectorized
bm<char, highly_aligned_allocator, Op::StringRFind>/15/14
6.15 ns
6.53 ns
vectorized
bm<char, highly_aligned_allocator, Op::StringRFind>/7/6
3.11 ns
3.14 ns
vectorized
bm<uint16_t, not_highly_aligned_allocator, Op::FindSized>/8021/3056
81.5 ns
82.5 ns
bm<uint16_t, not_highly_aligned_allocator, Op::FindSized>/63/62
3.19 ns
3.28 ns
bm<uint16_t, not_highly_aligned_allocator, Op::FindSized>/31/30
2.67 ns
2.70 ns
bm<uint16_t, not_highly_aligned_allocator, Op::FindSized>/15/14
3.05 ns
3.09 ns
bm<uint16_t, not_highly_aligned_allocator, Op::FindSized>/7/6
2.58 ns
2.59 ns
bm<uint16_t, not_highly_aligned_allocator, Op::Count>/8021/3056
164 ns
164 ns
bm<uint16_t, not_highly_aligned_allocator, Op::Count>/63/62
4.71 ns
4.72 ns
bm<uint16_t, not_highly_aligned_allocator, Op::Count>/31/30
4.48 ns
4.49 ns
bm<uint16_t, not_highly_aligned_allocator, Op::Count>/15/14
4.69 ns
4.69 ns
bm<uint16_t, not_highly_aligned_allocator, Op::Count>/7/6
3.52 ns
3.54 ns
bm<wchar_t, not_highly_aligned_allocator, Op::StringFind>/8021/3056
731 ns
734 ns
bm<wchar_t, not_highly_aligned_allocator, Op::StringFind>/63/62
17.3 ns
17.4 ns
bm<wchar_t, not_highly_aligned_allocator, Op::StringFind>/31/30
9.35 ns
9.32 ns
bm<wchar_t, not_highly_aligned_allocator, Op::StringFind>/15/14
6.69 ns
5.86 ns
bm<wchar_t, not_highly_aligned_allocator, Op::StringFind>/7/6
2.69 ns
2.75 ns
bm<wchar_t, not_highly_aligned_allocator, Op::StringRFind>/8021/3056
732 ns
82.6 ns
vectorized
bm<wchar_t, not_highly_aligned_allocator, Op::StringRFind>/63/62
16.7 ns
4.01 ns
vectorized
bm<wchar_t, not_highly_aligned_allocator, Op::StringRFind>/31/30
8.73 ns
3.42 ns
vectorized
bm<wchar_t, not_highly_aligned_allocator, Op::StringRFind>/15/14
4.41 ns
3.76 ns
vectorized
bm<wchar_t, not_highly_aligned_allocator, Op::StringRFind>/7/6
2.47 ns
3.05 ns
vectorized
bm<uint32_t, not_highly_aligned_allocator, Op::FindSized>/8021/3056
154 ns
152 ns
bm<uint32_t, not_highly_aligned_allocator, Op::FindSized>/63/62
3.99 ns
3.97 ns
bm<uint32_t, not_highly_aligned_allocator, Op::FindSized>/31/30
2.85 ns
3.00 ns
bm<uint32_t, not_highly_aligned_allocator, Op::FindSized>/15/14
2.63 ns
2.59 ns
bm<uint32_t, not_highly_aligned_allocator, Op::FindSized>/7/6
2.56 ns
2.38 ns
bm<uint32_t, not_highly_aligned_allocator, Op::Count>/8021/3056
324 ns
321 ns
bm<uint32_t, not_highly_aligned_allocator, Op::Count>/63/62
4.79 ns
4.70 ns
bm<uint32_t, not_highly_aligned_allocator, Op::Count>/31/30
4.23 ns
4.22 ns
bm<uint32_t, not_highly_aligned_allocator, Op::Count>/15/14
3.85 ns
3.83 ns
bm<uint32_t, not_highly_aligned_allocator, Op::Count>/7/6
3.75 ns
3.77 ns
bm<char32_t, not_highly_aligned_allocator, Op::StringFind>/8021/3056
729 ns
733 ns
bm<char32_t, not_highly_aligned_allocator, Op::StringFind>/63/62
16.9 ns
30.2 ns
bm<char32_t, not_highly_aligned_allocator, Op::StringFind>/31/30
9.46 ns
15.7 ns
bm<char32_t, not_highly_aligned_allocator, Op::StringFind>/15/14
6.76 ns
4.46 ns
bm<char32_t, not_highly_aligned_allocator, Op::StringFind>/7/6
2.88 ns
2.37 ns
bm<char32_t, not_highly_aligned_allocator, Op::StringRFind>/8021/3056
731 ns
155 ns
vectorized
bm<char32_t, not_highly_aligned_allocator, Op::StringRFind>/63/62
16.6 ns
5.46 ns
vectorized
bm<char32_t, not_highly_aligned_allocator, Op::StringRFind>/31/30
8.93 ns
3.89 ns
vectorized
bm<char32_t, not_highly_aligned_allocator, Op::StringRFind>/15/14
5.07 ns
3.51 ns
vectorized
bm<char32_t, not_highly_aligned_allocator, Op::StringRFind>/7/6
2.58 ns
3.05 ns
vectorized
bm<uint64_t, not_highly_aligned_allocator, Op::FindSized>/8021/3056
288 ns
287 ns
bm<uint64_t, not_highly_aligned_allocator, Op::FindSized>/63/62
6.73 ns
6.80 ns
bm<uint64_t, not_highly_aligned_allocator, Op::FindSized>/31/30
3.97 ns
3.99 ns
bm<uint64_t, not_highly_aligned_allocator, Op::FindSized>/15/14
2.84 ns
2.82 ns
bm<uint64_t, not_highly_aligned_allocator, Op::FindSized>/7/6
2.65 ns
2.64 ns
bm<uint64_t, not_highly_aligned_allocator, Op::Count>/8021/3056
922 ns
930 ns
bm<uint64_t, not_highly_aligned_allocator, Op::Count>/63/62
6.41 ns
9.30 ns
bm<uint64_t, not_highly_aligned_allocator, Op::Count>/31/30
4.19 ns
4.17 ns
bm<uint64_t, not_highly_aligned_allocator, Op::Count>/15/14
3.51 ns
3.54 ns
bm<uint64_t, not_highly_aligned_allocator, Op::Count>/7/6
3.16 ns
3.20 ns