JIT-компиляция

JIT-компиляция

Just-in-time compilation (JIT, компиляция «на лету»), dynamic translation (динамическая компиляция) — технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы программы. Таким образом достигается высокая скорость выполнения по сравнению с интерпретируемым байткодом[1] (сравнимая с компилируемыми языками) за счёт увеличения потребления памяти (для хранения результатов компиляции) и затрат времени на компиляцию. JIT базируется на двух более ранних идеях, касающихся среды исполнения: компиляции байт-кода и динамической компиляции.

В языках, компилирующихся в байт-код, таких как Lua, Perl, GNU CLISP или Java, исходный код транслируется в одно из промежуточных представлений, известное как байт-код. Байт-код не является машинным кодом какого-либо компьютера и может переноситься на различные компьютерные архитектуры. Байт-код интерпретируется (исполняется) виртуальной машиной.

JIT используется в реализациях Java, JavaScript, .NET Framework, в одной из реализаций Python — PyPy.[2] Существующие наиболее распространённые интерпретаторы языков Ruby, Perl, Python и им подобных имеют ограниченные или неполные JIT.

Проект DotGNU разрабатывает библиотеку libJIT, которая предоставляет возможность привести JIT в любой скриптовой язык. Проекты LLVM и GNU Lightning[3] также могут быть использованы для создания JIT.

Видимо, впервые компиляция на лету была введена в реализациях динамического интерпретируемого языка Smalltalk.

Также большой интерес представляет диссертация, защищённая в 1994 году в Университете ETH (Швейцария, Цюрих) Михаэлем Францем «Динамическая кодогенерация — ключ к переносимому программному обеспечению»[4] и реализованная им система Juice[5] динамической кодогенерации из переносимого семантического дерева для языка Оберон. Система Juice предлагалась как плагин для Интернет-браузеров.

См. также

Примечания



Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "JIT-компиляция" в других словарях:

  • JIT — Just in time compilation (JIT) (также известна как dynamic translation)  компиляция «на лету»  это технология увеличения производительности программных систем, использующих байт код, путём трансляции байт кода в машинный код… …   Википедия

  • Компиляция во время выполнения — Just in time compilation (JIT) (также известна как dynamic translation) компиляция «на лету» это технология увеличения производительности программных систем, использующих байт код, путём трансляции байт кода в машинный код непосредственно во… …   Википедия

  • Компиляция (программирование) — Компилятор  Программа или техническое средство, выполняющее компиляцию.[1][2] Машинная программа, используемая для компиляции.[3][2] Транслятор, выполняющий преобразование программы, составленной на исходном языке, в объектный модуль …   Википедия

  • Динамическая компиляция — Just in time compilation (JIT) (также известна как dynamic translation) компиляция «на лету» это технология увеличения производительности программных систем, использующих байт код, путём трансляции байт кода в машинный код непосредственно во… …   Википедия

  • AOT-компиляция — Ahead of Time (AOT) компилятор  это вид компилятора, который использует метод Ahead of Time Compilation (компиляция перед исполнением). Применяется при компиляции в «промежуточные» языки, такие как байт код Java, .NET Common Intermediate… …   Википедия

  • Компилятор — Эта статья включает описание термина «Компиляция»; см. также другие значения. Компилятор  программа или техническое средство, выполняющее компиляцию.[1][2][3] Компиляция  трансляция программы, составленной на исходном языке высокого… …   Википедия

  • Ngen — The Native Image Generator  утилита, позволяющая создавать из сборок на CIL коде для виртуальной машины CLR образы в машинном коде (native image) и устанавливать его в кэш сборок локального компьютера. За счёт этого повышается эффективность… …   Википедия

  • Low Level Virtual Machine — LLVM Тип Компилятор Разработчик LLVM Developer Group Н …   Википедия

  • Интерпретируемый язык программирования — язык программирования, в котором исходный код программы не преобразовывается в машинный код для непосредственного выполнения центральным процессором (как в компилируемых языках), а исполняется с помощью специальной программы интерпретатора. В… …   Википедия

  • Двоичная трансляция — В компьютерной области под двоичной трансляцией (от англ. binary translation) понимают эмуляцию одного набора инструкций на другом за счет трансляции машинного кода. Последовательности инструкций переводятся из исходного набора (source) в целевой …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»