Двигатели JavaScript используют компилятор JIT (точно в срок) для выполнения кода.

Я знаю, вам должно быть интересно, что, черт возьми, такое JIT и как оно работает?

давайте разберемся с JIT

Но прежде чем разбираться в JIT, давайте ненадолго изменим тему и попытаемся понять, что такое компилятор и интерпретатор и как они работают?

Компилятор

Исходный код преобразуется в машинный код один раз, а затем выполняется.

Плюсы

  • Допустим, у нас есть цикл, который выполняется 40 раз, нам не нужно снова и снова переводить один и тот же код. Время, которое он экономит, огромно.
  • Преобразованный код будет более эффективным, потому что у нас будет больше времени на оптимизацию.

Минусы

  • Для запуска требуется немного больше времени, потому что он должен пройти этот этап компиляции в начале.

Переводчик

Переводчики работают быстро. Нам не нужно проходить весь этот этап компиляции перед выполнением. Он просто начинает переводить первую строку, а затем выполняет ее.

Плюсы

  • Быстрое время запуска характерно для интерпретаторов. Вот почему браузеры вначале использовали интерпретаторы JavaScript.

Минусы

  • Когда вы запускаете один и тот же код более одного раза. Например, если вы находитесь в петле. Тогда вам придется делать один и тот же перевод снова и снова.
  • Код будет менее эффективен, чем компилятор, потому что у нас будет меньше времени на оптимизацию.

Точный компилятор (JIT)

Чтобы избавиться от неэффективности интерпретатора, «интерпретатор продолжает повторно переводить один и тот же код каждый раз, когда он проходит через цикл».

В компиляторе JIT у нас есть новый компонент, называемый монитором (он же профайлер). Этот монитор наблюдает за выполнением кода и

  • Определите горячие или теплые компоненты кода, например: повторяющийся код.
  • Преобразуйте эти компоненты в машинный код во время выполнения.
  • Оптимизируйте сгенерированный машинный код.
  • Горячая замена предыдущей реализации кода.

Короче говоря, компилятор Just in time - это не что иное, как комбинация интерпретатора и компилятора.

Я надеюсь, что вы нашли его полезным, и если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать.

С гордостью поправьте меня, если я ошибаюсь:)

Твиттер || Линкедин