<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; В Chrome тестируют новый подход к компиляции JavaScript]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=38523&amp;type=atom" />
	<updated>2017-02-15T06:31:58Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=38523</id>
		<entry>
			<title type="html"><![CDATA[В Chrome тестируют новый подход к компиляции JavaScript]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=452283#p452283" />
			<content type="html"><![CDATA[<p><br />&nbsp; &nbsp; Разработчики JavaScript движка V8 объявили о начале тестирования упрощённой схемы компиляции JavaScript, основанной на применении интерпретатора&nbsp; Ignition и JIT-компилятора Turbofan для всего JavaScript, а не для специфичных ситуаций. Новый режим включен по умолчанию для контрольной группы пользователей веток Chrome Canary и Chrome Developer. Остальные могут включить новый режим активировав опцию &quot;Experimental JavaScript Compilation Pipeline&quot; в &quot;about:flags&quot;.&nbsp; &nbsp; &nbsp; &nbsp;Ранее в V8 использовался достаточно сложный многоуровневый процесс компиляции JavaScript, в котором одноразовый код интерпретировался на первой стадии, после чего генерировался машинный код для JIT, который периодически обновлялся и улучшался двумя оптимизирующими JIT-компиляторами. В частности, вначале генерировался машинный код для всего JavaScript при помощи быстрого JIT-компилятора FullCodegen, а для устранения задержки перед готовностью JIT-компилятора применялся интерпретатор Ignition, который также брал на себя единичные операции, не требующие высокой скорости выполнения, для которых нет смысла привлекать полноценный JIT.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Вместо машинного кода Ignition использует байткод, выполняемый в регистровой виртуальной машине, который требует в 2-4 раза меньше памяти, а по скорости выполнения в реальных приложениях очень близок к неоптимизированному машинному коду. После формирования базового машинного кода для JIT, вступали в строй два дополнительных JIT-компилятора, которые генерировали оптимизированный код, учитывая накопленную статистику. Выбор того или иного оптимизирующего компилятора зависел от контекста, но Turbofan изначально развивался как будущая замена&nbsp; Crankshaft, по мере тестирования и стабилизации забирая на себя всё больше функций.&nbsp; &nbsp; &nbsp;<span class="postimg"><img src="https://www.opennet.ru/opennews/pics_base/0_1487151495.png" alt="https://www.opennet.ru/opennews/pics_base/0_1487151495.png" /></span><br />&nbsp; &nbsp; &nbsp; Новая схема подразумевает применение на первой стадии только интерпретатора с байткодом с подключением по мере выполнения кода&nbsp; JIT-компилятора Turbofan. Таким образом полностью исключается фаза упреждающей&nbsp; генерации неоптимизированного машинного кода JIT-компилятром FullCodegen, а также удаляются привязки к старому JIT-компилятору Crankshaft и лишняя логика разветвлений. Ожидается, что изменение положительно скажется на производительности реальных JavaScript-приложений и позволит снизить расход памяти.&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; Источник: <strong>http://www.opennet.ru/opennews/art.shtml?num=46051</strong><br />&nbsp; &nbsp; <br /><a href="http://www.opennet.ru/opennews/art.shtml?num=46051">_источник</a></p>]]></content>
			<author>
				<name><![CDATA[R2-D2]]></name>
				<uri>https://linuxforum.ru/profile.php?id=40794</uri>
			</author>
			<updated>2017-02-15T06:31:58Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=452283#p452283</id>
		</entry>
</feed>
