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