Компиляция JavaScript Just In Time - PullRequest
       8

Компиляция JavaScript Just In Time

20 голосов
/ 18 октября 2011

У меня довольно большая страница JavaScript для HTML для устройства.

Но это немного медленно.Я пытался сжимать файлы JavaScript, но это все еще неудовлетворительно.

Поэтому я подумал, возможно ли сделать его как Just in Time , который скомпилирован, преобразован в машинный код и использует его?(Надеюсь, мое понимание правильное) Я использую браузер на основе WebKit.

Кто-нибудь, пожалуйста, кто сделал это, пожалуйста, предоставьте ссылки на страницы "Как сделать" или информацию о том же.

1 Ответ

58 голосов
/ 18 октября 2011

Safari и Chrome уже делают JIT-компиляцию Javascript.Фактически, единственный широко используемый браузер, который не использует IE8 и более ранние версии.Это одна из главных причин, почему IE8 намного медленнее, чем конкуренты в наши дни.

Но, читая между строк вашего вопроса, я предполагаю, что вы не совсем понимаете, что такое JIT-компиляция.JIT компиляция происходит в браузере;вам вообще не нужно менять код, чтобы браузер мог выполнить для него JIT-компиляцию.

То, о чем вы на самом деле думаете, это компиляция байт-кода, такой как Java.Этот байт-код фактически является наполовину скомпилированным языком, который сам JIT-компилируется при запуске программы.Если это то, о чем вы думаете, я могу подтвердить, что это не вариант для кода Javascript на основе браузера.

Google играл с технологией под названием «Native Client» (NaCl), котораяпозволяет предоставлять скомпилированный код в браузер, но он пока недоступен, кроме как в разрабатываемых версиях Chrome.

В любом случае компиляция может ускорить выполнение кода, но не решит фундаментальную проблемупочему он работает медленно, что, вероятно, будет гораздо лучше решить.(даже скомпилированный код будет работать плохо, если у него есть узкие места; сама по себе компиляция магическим образом не делает медленный код лучше)

Если вы хотите узнать, почему ваш скрипт работает медленно, я рекомендую использовать инструмент профилирования,например, встроенный в Firebug или Chrome Developer Tools.Это поможет вам определить части вашего кода, которые работают медленно.

Вы также можете попробовать инструмент YSlow , который также может дать полезную информацию о производительности JavaScript.

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

Надеюсь, это поможет.

...