Microsoft говорит, что IE9 имеет параллельный рендеринг и выполнение Javascript - PullRequest
7 голосов
/ 07 июня 2011

The new JavaScript engine takes advantage of multiple CPU cores through Windows to interpret, compile, and run code in parallel. - http://technet.microsoft.com/en-us/library/gg699435.aspx

и

The Chakra engine interprets, compiles, and executes code in parallel and takes advantage of multiple CPU cores, when available. - http://msdn.microsoft.com/en-us/ie/ff468705.aspx

Подожди, что?!? Означает ли это, что в IE9 у нас есть многопоточное параллельное выполнение кода JavaScript (вне веб-рабочих)?

Я думаю, что это просто плохая маркетинговая уловка, но я хотел бы увидеть больше информации об этом. Может быть, они означают, что разные окна / вкладки / процессы браузера могут использовать несколько процессоров?

1 Ответ

3 голосов
/ 07 июня 2011

Выводы, основанные в основном на комментариях и, следовательно, предоставленные в виде ответа вики сообщества, так что этот вопрос заканчивается фактическим ответом:

Вероятно, Microsoft подразумевает, что отдельные задачи (i) интерпретации и/ или работает;и (ii) компиляция происходит параллельно.Вероятно, они применили такую ​​технологию, как старая JVM от HotSpot от Sun, чтобы виртуальная машина Javascript интерпретировала код в первый раз, потому что она может начать делать это мгновенно.Кроме того, JIT компилирует любой код, который, кажется, используется достаточно часто, чтобы сделать это полезным.Он может даже иметь разные уровни оптимизации компилятора, которые он медленно набирает.В этом случае он может использовать несколько ядер для интерпретации или запуска одного фрагмента кода, а также произвольной компиляции многих других, или даже во время перекомпиляции и лучшей оптимизации того же фрагмента кода, который выполняется.

Однако этотакже возможно на техническом уровне, что вы можете выполнить статический анализ, чтобы определить, когда обратные вызовы взаимно независимы с точки зрения состояния, и позволить этим обратным вызовам выполняться параллельно, если инициирующие события побуждают их сделать это.Таким образом, виртуальная машина Javascript может фактически интерпретировать / выполнять код параллельно, не затрагивая семантически последовательную природу языка.Такая система была бы логически похожа на работу суперскалярных процессоров, хотя и с гораздо большим удалением и значительно большей сложностью.

...