<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Пример использования средств JIT-компиляции, появившихся в G...</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/101971.html</link>
    <description>Разработчики из компании Red Hat опубликовали интересную заметку (http://developerblog.redhat.com/2015/04/07/jit-compilation-using-gcc-5-2/) с примером использования библиотеки libgccjit (https://gcc.gnu.org/wiki/JIT), которая входит в состав набора компиляторов GCC 5 (https://gcc.gnu.org/gcc-5/changes.html), релиз которого ожидается через несколько недель. В GCC 5 генератор кода может быть собран в виде разделяемой библиотеки, встроен в другие процессы и использован для  упреждающей AOT-компиляции (Ahead-of-time) или  JIT-компиляции байткода в машинный код. В заметке показано как построить компилятор для гипотетического языка программирования, используя Python-биндинг (https://pypi.python.org/pypi/gccjit) к libgccjit для JIT-компиляции кода в Python-скрипте.&lt;br&gt;&lt;br&gt;&lt;br&gt;URL: http://developerblog.redhat.com/2015/04/07/jit-compilation-using-gcc-5-2/&lt;br&gt;Новость: http://www.opennet.ru/opennews/art.shtml?num=41999&lt;br&gt;</description>

<item>
    <title>Пример использования средств JIT-компиляции, появившихся в G... (freehck)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/101971.html#47</link>
    <pubDate>Mon, 22 Jun 2015 12:26:08 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Суть в том, что от проектов LLVM и JVM то и дело слышны возгласы...&lt;br&gt;&amp;gt; Ну это не технические отличия, а вопрос позиционирования.&lt;br&gt;&amp;gt; И на самом деле, производительность можно улучшить за счет JIT. Например, JIT &lt;br&gt;&amp;gt; позволяет вызывать напрямую или даже встраивать полиморфные вызовы, если во время &lt;br&gt;&amp;gt; выполнения оказывается, что используется только одна реализация (может зависеть от входных &lt;br&gt;&amp;gt; данных &amp;#8212; оптимизировать статически не получится).&lt;br&gt;&lt;br&gt;Да, это может дать прирост производительности. Однако я не очень представляю, как оптимизации, основанные на входных данных могут быть произведены автоматически. Это наверняка потребует строго выдержанного стиля кода, отступление от которого приведёт к невозможности подобных оптимизаций.&lt;br&gt;&lt;br&gt;Если бы Вас не затруднило предоставить примеры, где подобный подход действительно применяется и даёт выигрыш - было бы здорово.&lt;br&gt;&lt;br&gt;К тому же, не стоит забывать, что такой подход подразумевает возрастающие накладные расходы для постоянного анализа входных данных, чтобы отловит</description>
</item>

<item>
    <title>Пример использования средств JIT-компиляции, появившихся в G... (Tav)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/101971.html#46</link>
    <pubDate>Fri, 10 Apr 2015 15:13:26 GMT</pubDate>
    <description>&amp;gt; Суть в том, что от проектов LLVM и JVM то и дело слышны возгласы...&lt;br&gt;&lt;br&gt;Ну это не технические отличия, а вопрос позиционирования.&lt;br&gt;&lt;br&gt;И на самом деле, производительность можно улучшить за счет JIT. Например, JIT позволяет вызывать напрямую или даже встраивать полиморфные вызовы, если во время выполнения оказывается, что используется только одна реализация (может зависеть от входных данных &amp;#8212; оптимизировать статически не получится). А встраивание делает возможными дальнейшие оптимизации. Если что-то меняется, что может нарушить сделанные допущения, оптимизация отменяется. Обзор оптимизаций, которые выполняет HotSpot: https://wikis.oracle.com/display/HotSpotInternals/PerformanceTechniques&lt;br&gt;&lt;br&gt;Но возможность динамически менять код &amp;#8212; более важное применение, с этим согласен.&lt;br&gt;&lt;br&gt;&amp;gt; Ну, это всё же частные случаи второго пункта, про модификацию программы во время выполнения.&lt;br&gt;&lt;br&gt;Можно считать и так. Выделил отдельно, чтобы обратить внимание на то, что технология может быть непосредственно полезна не только раз</description>
</item>

<item>
    <title>Пример использования средств JIT-компиляции, появившихся... (arisu)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/101971.html#45</link>
    <pubDate>Thu, 09 Apr 2015 14:57:23 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Проще что?&lt;br&gt;&amp;gt; всё&lt;br&gt;&lt;br&gt;хэш&amp;#8208;таблицы, например. куда уж несчастным скриптовикам до няшности и удобства использования хэш&amp;#8208;таблиц в си&amp;#8230;&lt;br&gt;</description>
</item>

<item>
    <title>Пример использования средств JIT-компиляции, появившихся в G... (Аноним)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/101971.html#44</link>
    <pubDate>Thu, 09 Apr 2015 08:34:39 GMT</pubDate>
    <description>Вообще-то, libgccjit - это всего лишь backend, т.е. генератор машинного кода. А вот фронтенд для C вам придется написать самим. Эта задачка посложнее всей libgccjit будет. Так что сабж подходит для чего-то простого, что при этом кровь из носу надо скомпилировать налету. Даже не знаю, что это могло бы быть.&lt;br&gt;&lt;br&gt;А для &quot;скриптов на C&quot; лучше смотреть в сторону clang.&lt;br&gt;</description>
</item>

<item>
    <title>Пример использования средств JIT-компиляции, появившихся в G... (cmp)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/101971.html#43</link>
    <pubDate>Thu, 09 Apr 2015 05:56:58 GMT</pubDate>
    <description>О чем речь, если оно поддерживает си, то и луа автоматом, кому надо луа пусть его юзает, кому надо си пусть юзает его, программировать плагины, думаю, будет гораздо удобнее.&lt;br&gt;Если оно будет динамически обновлять код по ходу выполнения, так это сказка.&lt;br&gt;</description>
</item>

<item>
    <title>Пример использования средств JIT-компиляции, появившихся в G... (cmp)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/101971.html#42</link>
    <pubDate>Thu, 09 Apr 2015 05:45:25 GMT</pubDate>
    <description>да ну&lt;br&gt;</description>
</item>

<item>
    <title>Пример использования средств JIT-компиляции, появившихся в G... (freehck)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/101971.html#41</link>
    <pubDate>Thu, 09 Apr 2015 04:09:00 GMT</pubDate>
    <description>&amp;gt; Однако это не умаляет достоинства llvm, они дали очень хороший &quot;пинок&quot; для &lt;br&gt;&amp;gt; развития gcc. Конкуренция это всегда хорошо. И может быть они когда &lt;br&gt;&amp;gt; нибудь догонят gcc по возможностям...&lt;br&gt;&lt;br&gt;Это вряд ли. Они ведь компилируются только в одну архитектуру, а потом на лету пытаются перекомпилироваться в машинные коды. Трижды ха. Это конечно определённо даёт фору в реализации новых стандартов ЯП, но жутко демпингует их по качеству сгенерированного кода. JIT относительно хорош для многих вещей, но не для оптимизации же.&lt;br&gt;&lt;br&gt;Однако конкуренция - таки да, это хорошо.&lt;br&gt;</description>
</item>

<item>
    <title>Пример использования средств JIT-компиляции, появившихся в G... (freehck)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/101971.html#40</link>
    <pubDate>Thu, 09 Apr 2015 04:03:36 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Ну, это скорее её недостаток. Ей ведь надо балансировать между скоростью запуска и скоростью работы, вот и выкручиваются, как могут.&lt;br&gt;&amp;gt; На серверах, где программа перезапускается редко и работает долго, это не проблема. &lt;br&gt;&lt;br&gt;А у программ скомпилированных &quot;до конца&quot;, такой проблемы нет.&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; Но упаси боже, не в том же виде, в каком предлагают его LLVM и JVM.&lt;br&gt;&amp;gt; В чем суть отличий &quot;того же вида&quot; от не того?&lt;br&gt;&lt;br&gt;Суть в том, что от проектов LLVM и JVM то и дело слышны возгласы, что мол проекты позволяют достигнуть производительности компилируемых языков, и что производительность их за так сильно возросла именно за счёт JIT. Надо понимать, что JIT всё-таки хоть и может привести к повышению производительности, но вообще говоря не для неё создан, ибо &quot;до конца&quot; с компилированные программы по-любому дадут более оптимизированный код.&lt;br&gt;&lt;br&gt;А вот что касается возможности генерации кода на лету - то это действительно очень востребовано. Во-первых любой REPL&#091;1&#093; на этом основан, во-вторых - очень удобно генерировать функцию </description>
</item>

<item>
    <title>Пример использования средств JIT-компиляции, появившихся в G... (Vkni)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/101971.html#38</link>
    <pubDate>Thu, 09 Apr 2015 03:11:17 GMT</pubDate>
    <description>&amp;gt; На плюсах - тоже можно хотя бы сделать по-человечески&lt;br&gt;&lt;br&gt;Нельзя.&lt;br&gt;</description>
</item>

</channel>
</rss>
