Стандартный JavaScript является однопоточным: он может выполнять только одну программу на одном процессоре (ядре).
Для того, что вы описываете, вам, вероятно, придется разделить ваш набор данных на куски и создать отдельный JavaScript Web Worker, выполняющий ваш алгоритм для обработки каждого чанка. Это предполагает, что у вас есть структурно однородный набор данных. (Остерегайтесь граничных условий.)
Эффективное использование Web Workers требует понимания того, как переписывать последовательные алгоритмы как параллельные, и других аспектов многопоточного программирования - все это требует передовых навыков программирования.
JavaScript Web Workers - это автономные независимые исполнительные блоки (потоки), отдельные и изолированные от основной программы и друг от друга. Связь между основной программой и веб-работниками, а также между самими веб-работниками осуществляется через сообщения данных, управляемые событиями.
Операционная система хоста может выполнять отдельные потоки Web Worker на отдельных ядрах, обеспечивая до 100% использования процессорной мощности.
Веб-работники предназначены только для вычислений. Они не имеют доступа к DOM или любым компонентам браузера, связанным с DOM, таким как window. (Это позволяет избежать всевозможных потенциальных проблем с сериализацией доступа к ним.) Таким образом, любой вывод, который нужно отобразить, должен быть передан обратно из Worker в основной поток.
Все последние браузеры предлагают некоторую степень поддержки для веб-работников. Таблица внизу страницы Mozilla Web Worker API, https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API, показывает поддержку отдельных браузеров и версий для различных функций Web Worker.
Хороший учебник по использованию веб-работников:
http://www.html5rocks.com/en/tutorials/workers/basics/