Подтвердить что ты не робот

Параллельный код JavaScript

Возможно ли запустить JavaScript-код параллельно в браузере? Я готов пожертвовать поддержкой браузера (IE, Opera, что-нибудь еще), чтобы получить некоторые преимущества здесь.

4b9b3361

Ответ 1

Если вам не нужно манипулировать dom, вы можете использовать веб-мастеров... есть еще несколько ограничений, но проверьте его @http://ejohn.org/blog/web-workers/

Ответ 2

Parallel.js имеет хороший API для многопоточной обработки в Javascript. Он работает как в веб-браузерах, так и в node.

Ответ 3

Возможно, было бы лучше перекодировать ваш JavaScript во что-то, что обычно работает быстрее, а не пытаться ускорить работу Javascript, перейдя параллельно. (Я ожидаю, что вы обнаружите, что затраты на параллельную работу с JavaScript слишком высоки, и это может сильно уничтожить любое возможное параллельное усиление, это обычная проблема с параллельным программированием).

Javascript интерпретируется в большинстве браузеров IIRC, и он динамичен поверх него, что означает, что он хорошо работает медленно.

У меня создается впечатление, что вы можете написать Java-код и запустить его под плагинами браузера. Java является безопасным по типу и JIT компилируется в машинный код. Я ожидаю, что любые большие вычисления, выполненные в Javascript, будут работать намного быстрее на Java. Я специально не предлагаю Java; любой скомпилированный язык, для которого вы можете получить плагин, будет делать.

В качестве альтернативы Google предоставляет Closure, компилятор JavaScript. Он, как утверждается, является компилятором, но для меня он выглядит оптимизатором, и я не знаю, что он "оптимизирует". Но, возможно, вы можете это использовать. Я ожидаю, что компилятор Closure будет встроен в Chrome (но я не знаю, что факт), и, возможно, только что Chrome запустит ваш компилятор JavaScript "бесплатно".

EDIT: после прочтения о том, что касается Closure, в качестве компилятора я не очень впечатлен. Похоже, что большая часть внимания делается на сокращении размера кода, что сводит к минимуму время загрузки, но не обязательно производительность. Одна хорошая вещь, которую они выполняют в функции inlining. Я сомневаюсь, что это поможет столько же, сколько переключиться на действительно скомпилированную langauge.

EDIT2: Очевидно, компилятор "Closure" отличается от механизма, чем работает JavaScript в Chrome. Мне сказали, но не знаю, это факт, что у Chrome есть настоящий компилятор.