Короли знают о делах своих министров не больше, чем рогоносцы о делах своих жен.

Ваше мнение обо мне... ошибочно! ...

Опубликован RFC для TLS 1.3
Mon, 13 Aug 2018 20:41:22 +0300

Компания Tesla намерена открыть код систем обеспечения безопасности
Mon, 13 Aug 2018 07:13:08 +0300

Представлен порт Qt 1 для современных систем
Mon, 13 Aug 2018 07:06:50 +0300

Dropbox прекращает поддержку всех ФС в Linux, за исключением Ext4
Sun, 12 Aug 2018 08:45:31 +0300

Инициатива по развитию открытого ПО для киноиндустрии
Fri, 10 Aug 2018 23:12:43 +0300

Разработчики bzip2 потеряли контроль над доменом bzip.org
Fri, 10 Aug 2018 10:00:02 +0300

Google назвал нового руководителя Android Open Source Project
Wed, 08 Aug 2018 23:28:27 +0300

Компания Lenovo подключилась к инициативе доставки обновлений прошивок для Linux
Tue, 07 Aug 2018 22:38:07 +0300

Выпуск языка программирования Dart 2.0
Tue, 07 Aug 2018 20:39:46 +0300

Доверие к Let's Encrypt обеспечено во всех списках корневых сертификатов
Mon, 06 Aug 2018 23:46:28 +0300

Тенденция "Bullshit Web"
Sun, 05 Aug 2018 08:30:14 +0300

Mozilla включает телеметрию для вкладок в режиме приватного просмотра
Sat, 04 Aug 2018 08:32:50 +0300

Рейтинг языков программирования 2018 года от издания IEEE Spectrum
Thu, 02 Aug 2018 20:51:09 +0300

Lubuntu перестаёт быть дистрибутивом для устаревшего оборудования
Thu, 02 Aug 2018 08:57:41 +0300

В Firefox 63 для Linux будет включено выполнение WebExtensions в отдельном процессе
Thu, 02 Aug 2018 06:17:53 +0300

Новости OPENNET
Новости

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

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

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

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

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

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

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

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

0 0

НОВОСТИ: Релиз эмулятора QEMU 3.0 Wed, 15 Aug 2018 09:55:14 +0300

Представлен релиз проекта QEMU 3.0.0. Значительное изменение номера версии связано с переходом проекта на новую схему нумерацию выпусков, в соответствии с которой первая цифра в номере версии будет увеличиваться раз в год. Никаких кардинальных изменений или нарушений совместимости изменение первой цифры не отражает.

???????@Mail.ru Opera Firefox INFOBOX - хостинг Google Chrome