Nikolas Klauser
97367d1046
[libc++] Vectorize std::find (#156431)
```
Apple M4:
-----------------------------------------------------------------------------
Benchmark old new
-----------------------------------------------------------------------------
std::find(vector<char>) (bail 25%)/8 1.43 ns 1.44 ns
std::find(vector<char>) (bail 25%)/1024 5.54 ns 5.59 ns
std::find(vector<char>) (bail 25%)/8192 38.4 ns 39.1 ns
std::find(vector<char>) (bail 25%)/32768 134 ns 136 ns
std::find(vector<int>) (bail 25%)/8 1.56 ns 1.57 ns
std::find(vector<int>) (bail 25%)/1024 65.3 ns 65.4 ns
std::find(vector<int>) (bail 25%)/8192 465 ns 464 ns
std::find(vector<int>) (bail 25%)/32768 1832 ns 1832 ns
std::find(vector<long long>) (bail 25%)/8 0.920 ns 1.20 ns
std::find(vector<long long>) (bail 25%)/1024 65.2 ns 31.2 ns
std::find(vector<long long>) (bail 25%)/8192 464 ns 255 ns
std::find(vector<long long>) (bail 25%)/32768 1833 ns 992 ns
std::find(vector<char>) (process all)/8 1.21 ns 1.22 ns
std::find(vector<char>) (process all)/50 1.92 ns 1.93 ns
std::find(vector<char>) (process all)/1024 16.6 ns 16.9 ns
std::find(vector<char>) (process all)/8192 134 ns 136 ns
std::find(vector<char>) (process all)/32768 488 ns 503 ns
std::find(vector<int>) (process all)/8 2.45 ns 2.48 ns
std::find(vector<int>) (process all)/50 12.7 ns 12.7 ns
std::find(vector<int>) (process all)/1024 236 ns 236 ns
std::find(vector<int>) (process all)/8192 1830 ns 1834 ns
std::find(vector<int>) (process all)/32768 7351 ns 7346 ns
std::find(vector<long long>) (process all)/8 2.02 ns 1.45 ns
std::find(vector<long long>) (process all)/50 12.0 ns 6.12 ns
std::find(vector<long long>) (process all)/1024 235 ns 123 ns
std::find(vector<long long>) (process all)/8192 1830 ns 983 ns
std::find(vector<long long>) (process all)/32768 7306 ns 3969 ns
std::find(vector<bool>) (process all)/8 1.14 ns 1.15 ns
std::find(vector<bool>) (process all)/50 1.16 ns 1.17 ns
std::find(vector<bool>) (process all)/1024 4.51 ns 4.53 ns
std::find(vector<bool>) (process all)/8192 33.6 ns 33.5 ns
std::find(vector<bool>) (process all)/1048576 3660 ns 3660 ns
```
2025-09-29 11:10:19 +02:00
..
2024-12-18 21:10:27 +01:00
2024-11-06 12:10:06 +01:00
2024-11-06 12:10:06 +01:00
2024-12-18 21:10:27 +01:00
2024-04-22 22:13:58 +02:00
2025-01-08 11:12:59 -05:00
2025-09-25 15:10:37 -07:00
2025-07-25 16:27:34 +02:00
2024-11-06 12:10:06 +01:00
2024-11-12 23:03:52 +01:00
2023-12-18 14:01:33 -05:00
2025-07-25 16:27:34 +02:00
2024-11-06 12:10:06 +01:00
2025-03-19 11:36:29 -04:00
2024-12-18 21:10:27 +01:00
2025-03-19 11:51:21 -04:00
2025-02-05 11:39:49 -05:00
2023-12-18 14:01:33 -05:00
2024-12-18 21:10:27 +01:00
2024-12-18 21:10:27 +01:00
2024-09-12 21:18:43 +02:00
2024-09-12 21:18:43 +02:00
2023-12-15 17:10:16 +01:00
2025-09-29 11:10:19 +02:00
2025-07-25 16:27:34 +02:00
2025-07-25 16:27:34 +02:00
2025-07-25 16:27:34 +02:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-01-25 15:48:46 -05:00
2024-01-25 15:48:46 -05:00
2024-01-25 15:48:46 -05:00
2024-01-25 15:48:46 -05:00
2024-01-25 15:48:46 -05:00
2023-12-18 14:01:33 -05:00
2024-12-18 21:10:27 +01:00
2025-03-19 07:42:23 +08:00
2024-09-12 21:18:43 +02:00
2024-12-18 21:10:27 +01:00
2024-09-12 21:18:43 +02:00
2024-12-18 21:10:27 +01:00
2024-12-18 21:10:27 +01:00
2024-12-18 21:10:27 +01:00
2023-12-18 14:01:33 -05:00
2025-01-08 11:12:59 -05:00
2024-04-22 22:13:58 +02:00
2024-11-06 10:39:19 +01:00
2024-12-18 21:10:27 +01:00
2025-09-24 07:26:14 +08:00
2025-01-20 18:00:15 +01:00
2024-09-12 21:18:43 +02:00
2024-09-12 21:18:43 +02:00
2024-12-18 21:10:27 +01:00
2025-03-27 09:05:37 -04:00
2023-12-18 14:01:33 -05:00
2024-09-12 21:18:43 +02:00
2024-09-16 15:06:20 -04:00
2024-09-12 21:18:43 +02:00
2025-01-08 18:14:39 +01:00
2025-07-25 16:27:34 +02:00
2025-07-25 16:27:34 +02:00
2024-01-25 15:48:46 -05:00
2024-09-12 21:18:43 +02:00
2024-01-25 15:48:46 -05:00
2025-04-05 13:46:11 +02:00
2025-09-08 12:00:04 +02:00
2025-09-08 12:00:04 +02:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-09-16 15:06:20 -04:00
2024-03-18 08:29:44 +01:00
2024-01-25 15:48:46 -05:00
2025-01-24 09:34:42 +01:00
2024-03-18 08:29:44 +01:00
2025-04-16 17:34:11 +08:00
2024-11-06 12:10:06 +01:00
2024-11-06 12:10:06 +01:00
2024-11-06 12:10:06 +01:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-11-06 12:10:06 +01:00
2024-11-12 23:03:52 +01:00
2024-11-12 23:03:52 +01:00
2024-11-06 12:10:06 +01:00
2024-08-01 08:54:06 -04:00
2024-09-16 15:06:20 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-11-06 12:10:06 +01:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-09-16 15:06:20 -04:00
2024-08-01 08:54:06 -04:00
2024-09-30 08:30:16 -04:00
2025-06-18 12:22:47 -04:00
2025-06-18 12:22:47 -04:00
2024-09-16 15:06:20 -04:00
2024-09-16 15:06:20 -04:00
2024-08-01 08:54:06 -04:00
2025-03-20 01:59:32 +08:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2025-02-21 07:59:46 -05:00
2024-08-04 10:02:43 +02:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2025-03-27 09:05:37 -04:00
2025-03-27 09:05:37 -04:00
2024-08-01 08:54:06 -04:00
2025-03-27 09:05:37 -04:00
2025-03-27 09:05:37 -04:00
2024-08-01 08:54:06 -04:00
2024-10-30 11:51:55 +01:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-09-16 15:06:20 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-11-12 23:03:52 +01:00
2024-08-01 08:54:06 -04:00
2024-11-12 23:03:52 +01:00
2024-11-12 23:03:52 +01:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2025-03-06 09:23:55 +08:00
2025-03-07 01:27:48 +08:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2025-01-08 11:12:59 -05:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-09-12 21:18:43 +02:00
2024-09-12 21:18:43 +02:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-01-25 15:48:46 -05:00
2023-12-18 14:01:33 -05:00
2025-03-13 14:07:23 -04:00
2023-12-20 17:24:48 -08:00
2024-09-16 15:06:20 -04:00
2024-09-16 15:06:20 -04:00
2024-11-12 23:03:52 +01:00
2024-09-16 15:06:20 -04:00
2024-11-12 23:03:52 +01:00
2024-11-12 23:03:52 +01:00
2024-01-25 15:48:46 -05:00
2024-01-25 15:48:46 -05:00
2025-05-28 12:04:51 -04:00
2025-09-08 12:00:04 +02:00
2025-09-29 11:10:19 +02:00
2024-03-18 08:29:44 +01:00
2025-08-28 18:07:59 -04:00
2025-03-04 09:23:29 +08:00
2025-04-16 17:34:11 +08:00
2025-03-04 17:15:36 -05:00
2025-01-08 11:12:59 -05:00
2023-12-18 14:01:33 -05:00
2024-09-16 15:06:20 -04:00
2024-01-25 15:48:46 -05:00
2024-11-06 12:10:06 +01:00
2025-01-08 11:12:59 -05:00
2024-01-25 15:48:46 -05:00
2024-09-16 15:06:20 -04:00