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

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

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

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

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

Ответы

Ответ 1

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

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

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

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

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

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

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

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

Я надеюсь, что это поможет.