1000 - это очень маленькое число.Кроме того, имейте в виду, что распараллеливание поиска даст вам ускорение только по мере увеличения количества ядер.Если у вас больше потоков, чем ядер, ваше приложение снова начнет замедляться из-за переключения контекста и агрегирования информации.
Простым решением вашей проблемы является использование хеш-соединения.Создайте хеш-таблицу из M
, затем найдите в ней элементы N
(или наоборот; поскольку оба ваших массива малы, это не имеет большого значения).
Edit : в ответ на ваш комментарий мой ответ не сильно изменится.Вы по-прежнему можете линейно ускоряться только до тех пор, пока количество потоков не станет равным количеству процессоров, и не превысит его.
Если вы хотите реализовать параллельное хеш-соединение, это не составит труда.Начните с создания хеш-таблиц X-1, где X - это количество потоков / процессоров, которые у вас есть.Используйте вторую хеш-функцию, которая возвращает значение по модулю X-1, чтобы определить, в какой хеш-таблице должен быть каждый элемент.
При выполнении поиска ваш основной поток может применить вспомогательную хеш-функцию к каждому элементу, чтобы определить, какойпоток, чтобы передать его для поиска.