JIT проти перекладача
Компіляція Just In Time (також відома як динамічний переклад або JIT) - це техніка, яка використовується для обчислення для поліпшення якості виконання комп'ютерної програми. Це об'єднання двох ідей, знайдених у середовищах виконання: компіляція байтових кодів та динамічна компіляція (це процес, який деякі реалізації мови програмування використовують для отримання продуктивності під час виконання системи дії).
Перекладач найбільш точно описує виконання дії за допомогою комп’ютерної програми. Існує кілька варіантів щодо типу дій, які фактично виконує інтерпретатор: Він безпосередньо виконує вихідний код програми; він переводить вихідний код у подання, яке є ефективним проміжним поданням, а потім виконує згаданий код; він виконує попередньо скомпільований код, який був збережений та створений компілятором, який є частиною системи перекладача.
JIT має можливість поєднувати переваги, виявлені як в інтерпретації, так і в статичній (тобто достроково) компіляції. Як інтерпретатор, JIT здатний покращити продуктивність за допомогою кешування результатів блоків коду, який був перекладений - порівняно з простою повторною оцінкою кожного рядка або операнду в коді кожного разу, коли це відбувається (як в інтерпретованій мові). Так само, як статичний код компіляції на момент розробки, JIT може перекомпілювати код, якщо це буде найвигіднішим планом дій. Крім того, так само, як і статична компіляція, JIT здатний забезпечити гарантії безпеки.
Як і компілятори, інтерпретатори мають можливість перекладати код. Обидва є основними методами реалізації мов програмування; однак категорії "компілятор" або "перекладач" не відрізняються (для їх подвійних ролей як перекладачів коду). Найбільш очевидним недоліком використання інтерпретатора є те, що після інтерпретації коду програма неминуче працює повільніше, ніж при простому складанні коду; однак для інтерпретації кодування потрібно набагато менше часу, ніж для його компіляції та запуску (особливо це стосується прототипування та тестування коду).
Взагалі кажучи, JIT забезпечує набагато кращі показники, ніж інтерпретатори, і, у багатьох випадках, забезпечує набагато кращі показники, ніж статичні компілятори. Однак його перевагу над JIT не запобігає виникненню основних недоліків: при первинному виконанні програми існує невелика затримка (побічний ефект, який потребує часу для завантаження та компіляції байтового коду). Врешті-решт це призведе до кращого кодування; однак, початкова затримка, властива цьому, збільшуватиметься з якістю кодування.
Підсумок:
1. JIT - це техніка, яка використовується для поліпшення якості виконання часу виконання в умовах виконання; перекладач визначає виконання дії за допомогою комп’ютерної програми.
2. JIT поєднує в собі переваги інтерпретації та статичної компіляції; інтерпретатор може перекласти код так само, як компілятор, але на шкоду швидкості програми.