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
..
2025-09-29 11:10:19 +02:00
2025-09-23 10:33:33 -05:00
2025-09-24 10:34:53 +02:00
2025-08-26 08:04:28 +02:00
2025-09-25 09:25:27 +02:00
2025-04-09 23:47:57 +02:00
2025-07-05 18:11:36 +02:00
2025-05-28 12:04:51 -04:00
2025-09-04 09:20:02 +02:00
2025-09-23 09:59:11 +02:00
2025-03-27 11:34:38 +01:00
2025-09-25 15:35:43 +02:00
2025-06-10 05:54:15 +02:00
2025-08-05 22:11:27 +03:00
2025-09-24 07:26:40 +08:00
2025-08-26 08:04:28 +02:00
2025-09-28 09:19:15 +02:00
2025-09-28 09:19:15 +02:00
2025-08-26 08:04:28 +02:00
2025-09-25 15:10:37 -07:00
2025-09-02 08:42:39 +02:00
2025-04-09 23:47:57 +02:00
2025-09-04 09:20:02 +02:00
2025-09-25 15:35:43 +02:00
2025-09-04 09:20:02 +02:00
2025-06-11 14:31:13 +02:00
2025-09-25 19:59:08 +02:00
2025-08-26 08:04:28 +02:00
2025-09-24 10:40:36 +02:00
2025-08-26 08:04:28 +02:00
2025-06-21 09:58:45 +02:00
2025-07-05 18:11:58 +02:00
2025-05-28 12:04:51 -04:00
2025-09-09 07:46:47 -04:00
2025-09-27 22:49:54 +08:00
2025-04-13 08:40:21 -04:00
2025-09-25 09:29:01 +02:00
2025-01-10 15:21:58 -05:00
2025-08-26 08:04:28 +02:00
2025-08-26 08:04:28 +02:00
2025-09-02 08:42:39 +02:00
2025-09-25 15:10:37 -07:00
2025-09-15 15:56:15 +02:00
2025-04-09 23:47:57 +02:00
2025-09-25 19:48:14 +02:00
2025-07-05 18:11:58 +02:00
2025-09-24 15:49:55 +02:00
2025-07-31 02:52:17 -07:00
2025-04-18 20:57:05 -04:00
2025-09-11 12:52:18 +02:00
2025-07-18 11:06:27 -04:00
2025-09-17 07:52:49 -07:00
2025-09-23 13:51:36 +02:00
2025-07-24 13:39:48 -04:00
2025-02-18 12:12:23 +01:00
2025-07-10 09:21:46 +02:00
2025-09-12 06:33:10 -07:00
2025-09-25 15:10:37 -07:00
2025-05-28 12:04:51 -04:00
2025-07-14 09:56:19 -04:00
2025-04-19 07:12:43 -04:00
2025-06-02 13:13:57 -04:00
2025-05-08 16:35:00 -04:00
2025-01-17 14:22:40 -05:00
2025-07-16 00:44:16 +02:00
2025-04-09 15:00:46 +02:00
2025-09-25 20:16:27 +02:00
2024-12-21 13:01:48 +01:00
2025-01-08 11:12:59 -05:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2025-04-09 15:00:46 +02:00
2025-06-11 08:43:23 +02:00
2024-12-21 13:01:48 +01:00
2025-01-08 11:12:59 -05:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2025-09-25 15:10:37 -07:00
2025-05-08 16:48:57 -04:00
2025-05-28 12:04:51 -04:00
2025-04-09 15:00:46 +02:00
2025-06-24 13:56:17 -04:00
2024-12-21 13:01:48 +01:00
2025-04-09 15:00:46 +02:00
2025-05-28 12:04:51 -04:00
2025-04-09 15:00:46 +02:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2025-01-08 11:12:59 -05:00
2024-12-21 13:01:48 +01:00
2025-01-08 11:12:59 -05:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2025-01-08 11:12:59 -05:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2025-02-27 17:47:34 +01:00
2024-12-21 13:01:48 +01:00
2025-09-24 10:41:29 +02:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2025-04-09 15:00:46 +02:00
2025-04-09 15:00:46 +02:00
2024-12-21 13:01:48 +01:00
2025-04-09 15:00:46 +02:00
2025-07-06 12:25:18 +01:00
2025-07-06 12:25:18 +01:00
2024-12-21 13:01:48 +01:00
2025-04-09 15:00:46 +02:00
2025-09-24 10:41:29 +02:00
2025-08-27 14:50:37 +02:00
2025-07-06 17:32:59 +01:00
2025-07-20 11:23:31 +02:00
2025-05-28 12:04:51 -04:00
2024-12-21 13:01:48 +01:00
2025-07-05 18:11:58 +02:00
2025-06-10 14:12:46 -04:00
2025-04-09 23:47:57 +02:00
2024-12-21 13:01:48 +01:00
2025-07-05 18:11:58 +02:00
2025-08-18 13:26:13 +08:00
2025-04-09 15:00:46 +02:00
2025-07-18 11:26:36 -04:00
2025-09-24 10:41:29 +02:00
2025-07-05 18:11:58 +02:00
2025-09-25 15:10:37 -07:00
2025-08-05 17:47:11 +08:00
2025-06-08 21:58:36 +00:00
2025-04-14 17:33:57 -04:00
2025-04-09 15:00:46 +02:00
2025-09-29 11:10:19 +02:00
2025-09-24 10:40:36 +02:00
2024-12-21 13:01:48 +01:00
2025-04-09 15:00:46 +02:00
2025-04-05 13:46:11 +02:00
2025-09-24 07:26:40 +08:00
2025-07-05 18:11:58 +02:00
2025-07-19 11:12:20 +02:00
2025-09-24 10:41:29 +02:00
2024-12-21 13:01:48 +01:00
2025-07-20 09:13:59 +01:00
2025-04-09 23:47:57 +02:00
2025-07-21 20:41:00 +08:00
2025-07-20 11:23:31 +02:00
2025-04-09 15:00:46 +02:00
2025-09-24 10:41:29 +02:00
2025-07-05 18:07:07 +02:00
2025-04-09 15:00:46 +02:00
2025-04-09 23:47:57 +02:00
2025-09-24 10:41:29 +02:00
2025-09-24 10:41:29 +02:00
2025-01-17 14:22:40 -05:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2025-05-28 12:04:51 -04:00
2024-12-23 07:33:26 -08:00
2025-06-19 10:37:18 +02:00
2025-04-09 15:00:46 +02:00
2025-08-20 11:09:39 -04:00
2025-09-25 15:10:37 -07:00
2025-09-25 03:08:15 +03:00
2024-12-21 13:01:48 +01:00
2025-05-28 12:04:51 -04:00
2025-06-10 14:12:46 -04:00
2025-04-19 07:12:43 -04:00
2024-12-21 13:01:48 +01:00
2024-12-21 13:01:48 +01:00
2025-09-02 08:42:39 +02:00
2025-07-05 18:11:36 +02:00
2025-04-09 23:47:57 +02:00
2025-05-28 12:04:51 -04:00
2024-12-21 13:01:48 +01:00
2025-09-24 10:41:29 +02:00
2025-09-24 10:41:29 +02:00
2025-03-25 18:31:57 +01:00
2025-05-28 12:04:51 -04:00
2025-07-20 11:23:31 +02:00
2025-04-19 07:12:43 -04:00
2025-09-25 03:08:15 +03:00
2024-12-23 07:33:26 -08:00
2024-12-21 13:01:48 +01:00