Перейти к содержанию

Kaspersky User

Рекомендуемые сообщения

  • Ответов 2,4 тыс
  • Создана
  • Последний ответ

Топ авторов темы

  • Friend

    392

  • sputnikk

    265

  • Umnik

    159

  • Fox

    130

Как выложат на релизный канал, так и обновится.

Не хотите ждать, скачайте вручную, Friend дал ссылку.

Что вы каждый раз истерику устраиваете )

Ссылка на комментарий
Поделиться на другие сайты

В Firefox 58 появится новый двухуровневый компилятор

Разработчики Mozilla сообщили о включении в состав Firefox 58, релиз которого ожидается на следующей неделе, нового компилятора, который обеспечивает компиляцию промежуточного кода WebAssembly в 10-15 раз быстрее, чем используемый до этого оптимизирующий компилятор.

 

На типовой рабочей станции скорость компиляции кода WebAssembly достигает 30-60 Мб в секунду, а на мобильном устройстве 8 Мб в секунду, что быстрее, чем пропускная способность большинства сетей. Особенностью нового компилятора является возможность компиляции кода по мере его загрузки. В сочетании с высокой скоростью компиляции данная особенность позволяет получать готовый код почти сразу после окончания загрузки, так как большая часть кода успевает скомпилироваться во время загрузки кода.

 

Потребность в компиляции по мере загрузки возникла при появлении WebAssembly, так как для обычного JavaScript операции  парсинга требуют заметных ресурсов, а псевдокод WebAssembly значительно проще для декодирования и компактнее (требует передачи меньшего объёма по сети для реализации аналогичной функциональности). Ранее параллельно с загрузкой JavaScript осуществлялся парсинг, который выполнялся в параллельном потоке и формировал готовый для компиляции код к моменту окончания загрузки JavaScript, но компиляция производилась после завершения разбора.

0_1516263504.png

 

В WebAssembly готовность для компиляции наступает значительно раньше, а фазы декодирования и компиляции могут быть разделены на отдельные потоки и выполняться параллельно. Более того, компиляция может завершиться даже раньше  окончания загрузки файла wasm, так как секция с кодом в модуле расположена раньше секции с данными, и псевдокод успевает скомпилироваться ещё когда секция данных продолжает загружаться.

 

0_1516263535.png

 

Суть двухуровневого компилятора заключается в наличии двух фаз: baseline, в которой приоритет отдаётся скорости компиляции в ущерб качеству оптимизации, и оптимизирующей фазы, которая выполняется достаточно медленно, но выдаёт хорошо оптимизированный код. В частности, baseline-компиляция выполняется в 10-15 раз быстрее, но генерирует код, работающий примерно в два раза медленнее.

 

В процессе компиляции вначале  применяется baseline-стадия, которая быстро формирует готовый для исполнения код. Далее данный код запускается, а параллельно начинает работать оптимизирующая стадия компилятора, которая формирует улучшенный и более быстрый вариант кода, который после готовности заменяет собой предложенный на первой стадии код.

 

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

 

Компиляция на второй стадии выполняется в отдельном потоке, параллельно с работой кода web-приложения. Для ускорения данной стадии в новом движке Firefox осуществляется  распараллеливание  на уровне компиляции отдельных функций, которое позволяет разнести компиляцию на несколько потоков и задействовать все простаивающие ядра CPU. Для ещё большего ускорения работы компилятора планируется добавить систему кэширования, которая при повторном выполнении wasm-файлов позволит сразу использовать уже ранее скомпилированный и сохранённый в кэше машинный код. В Firefox 58 функциональность будет ограничена поддержкой [[https://blog.mozilla.org/javascript/2017/12/12/javascript-startup-bytecode-cache/ кэширования байткода]] для JavaScript (ускоряет загрузку Facebook на 12%, Twitter на 5.4%,  сайтов Google на 4.9%), а кэширование итогового машинного кода будет реализовано в одном из дальнейших  выпусков.

0_1516266787.png

  • Спасибо (+1) 1
  • Согласен 1
Ссылка на комментарий
Поделиться на другие сайты

Компания Mozilla разместила установочные файлы финальной версии Firefox 58.0 "Quantum" для операционных систем Windows, Linux и macOS на официальных серверах. Автоматическое обновление будет доступно 23 января

https://www.comss.ru/page.php?id=4782

По состоянию на сейчас невозможно загрузить с офсайта. ГРузится версия 57.0.4 - офлайн установщик.

Ссылка на комментарий
Поделиться на другие сайты

Интересно, в связи с введением новшеств в браузере, появятся ли на его движке хорошо финансируемые форки, типа Оперы или Яндекс-браузера.

Ссылка на комментарий
Поделиться на другие сайты

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...