Если один дополнительный поток хорош, как насчет 4?

Хорошо, давайте будем честными ... теперь я просто развлекаюсь ... Но, честно говоря, эта последняя итерация действительно принесла заметный выигрыш на мобильных устройствах ...

Аххх, кого это волнует! Это массив веб-воркеров!

Вы видите, что для каждого оранжевого Key Character в верхней строке доступен ww рабочий поток, который немедленно запускает поиск (розовые полосы). Больше не нужно ждать завершения предыдущих поисков. И после каждого ww завершения он становится доступным для следующего поиска.

Это потому, что workerArray.js веб-воркер настроен как диспетчер. Вы не можете его увидеть, потому что это так быстро, но для каждого Key Character workerArray фактически запускает крошечный стек выполнения, где он обрабатывает сообщение поискового запроса из основного потока и пересылает его первому доступному ww worker.

Мы успешно решили проблему с поисковой системой. Думайте об этом как о предотвращении движения путем добавления полос.

Почему 4 поисковика? Потому что в моем тестировании мне никогда не удавалось набирать достаточно быстро, чтобы понадобился 5-й (изменение количества рабочих оказывается довольно тривиальным).

Результатом является то, что существует практически нулевая задержка от входа Key Character до инициации search. Помимо попытки найти более эффективный алгоритм поиска, мы успешно устранили все другие узкие места в производительности.

Имейте в виду, я не говорю, что это лучшее решение. Может ли каждый мобильный телефон обрабатывать 4 веб-воркера? Стоит ли дополнительная сложность кода повышения производительности? Есть ли проблемы безопасности, которые также необходимо учитывать, которые могут еще больше усложнить код?

Это все важные вопросы, среди прочего, которые определят эффективность такого решения.

Но пока это чертовски мощный массив веб-воркеров! Давайте еще раз посмотрим на это в действии:

Если вы зашли так далеко, спасибо, что остались!

Если есть один важный вывод из этого путешествия, то это определенно будет:

Не бойтесь пробовать что-то новое и находить нестандартные решения.

Работают они или нет - вторично, их ценность - в накопленном опыте и знаниях!

Для всех, кто заинтересован, ознакомьтесь с подробным кодом ниже, чтобы узнать, как настроен массив веб-воркеров.

БОНУС

Есть небольшая проблема с кодом. Требуется очень небольшое исправление, чтобы сделать эту реализацию пуленепробиваемой, максимум 2 дополнительные строки кода. Сможете ли вы заметить это и решить, как это исправить?