JIT против переводчика
Компиляция Just In Time (также известная как динамический перевод или JIT) - это методика, используемая в вычислениях для повышения качества производительности компьютерной программы во время выполнения. Это объединение двух идей, найденных в средах выполнения: компиляция байт-кода и динамическая компиляция (это процесс, который используют некоторые реализации языка программирования для повышения производительности, пока система выполняет действие).
Интерпретатор наиболее точно описывает выполнение действия с помощью компьютерной программы. Существует несколько вариантов типа действий, которые фактически выполняет интерпретатор: он напрямую выполняет исходный код программы; он переводит исходный код в представление, которое является эффективным промежуточным представлением, и затем выполняет указанный код; он выполняет предварительно скомпилированный код, который был сохранен и создан компилятором, который является частью системы интерпретатора.
JIT обладает способностью сочетать преимущества, найденные как в интерпретации, так и в статической (то есть опережающей) компиляции. Как интерпретатор, JIT способен улучшить производительность за счет кэширования результатов блоков кода, которые были переведены, по сравнению с простой переоценкой каждой строки или операнда в коде каждый раз, когда это происходит (как в интерпретируемом языке). Как и статическая компиляция кода во время разработки, JIT может перекомпилировать код, если это окажется наиболее выгодным планом действий. Кроме того, в том же духе, что и в случае статической компиляции, JIT способен обеспечивать гарантии безопасности..
Как и компиляторы, интерпретаторы имеют возможность переводить код. Оба являются основными методами реализации языков программирования; однако категории «компилятор» или «интерпретатор» не различаются (из-за их двойной роли в качестве переводчиков кода). Наиболее очевидным недостатком использования интерпретатора является то, что после интерпретации кода программа неизбежно будет работать медленнее, чем при простой компиляции кода; однако для интерпретации кода требуется гораздо меньше времени, чем для его компиляции и запуска (особенно уместно при создании прототипа и тестировании кода).
Вообще говоря, JIT обеспечивает гораздо лучшую производительность, чем интерпретаторы, и во многих случаях обеспечивает гораздо лучшую производительность, чем статические компиляторы. Однако его превосходство над JIT не препятствует тому, чтобы у него были некоторые существенные недостатки: при первоначальном запуске приложения имеется небольшая задержка (побочный эффект от времени, необходимого для загрузки и компиляции байт-кода). Это в конечном итоге приведет к лучшему кодированию; однако начальная задержка, присущая этому, будет увеличиваться с качеством кодирования.
Резюме:
1. JIT - методика, используемая для улучшения качества производительности среды выполнения; интерпретатор определяет выполнение действия через компьютерную программу.
2. JIT сочетает в себе преимущества интерпретации и статической компиляции; Интерпретатор может переводить код так же, как компилятор, но в ущерб скорости программы.