Как раз во время компиляции, как Memoization? - PullRequest
0 голосов
/ 11 июня 2011

Я пытаюсь понять Как раз вовремя компиляция / интерпретация, и голова компиляции времени? Буду ли я прав, говоря, что как раз вовремя это как воспоминание? в том, что он использует «решения», то есть машинный или байтовый код, частей, которые он распознает как повторяющиеся?

1 Ответ

0 голосов
/ 13 июня 2011

Нет, это было бы неправильно.

Давайте посмотрим, что делают эти инструменты, когда вы набрасываете на них какой-то байт-код.(Очень простыми словами)

Интерпретатор

Интерпретатор просматривает байт-код, выясняет, что он должен сделать, делает это, а затем переходит к следующему байт-коду.Это довольно просто и происходит все во время выполнения.

Компилятор AOT

Компилятор AOT - это то, к чему чаще всего обращаются, когда люди говорят о компиляторе.Когда вы компилируете, он смотрит на предоставленный вами байт-код и выясняет, какой нативный код (ассемблер) он должен сгенерировать.Поэтому, когда вы запускаете этот нативный код, вам не нужно выяснять, что делать с интерпретатором, и поэтому он работает быстрее.

JIT-компилятор:

Идея JIT состоит в том, что большую часть времени в вашей программе тратится на циклы.Поэтому, когда у вас есть цикл, который имеет 100 итераций, и на каждой итерации вы добавляете какие-то вещи, интерпретатор должен смотреть на то, что вы хотите делать каждый раз, и делать это.JIT смотрит на цикл и говорит: «Мне не нужно выяснять, что это делает в 100 раз больше, чем agian. Я просто собираюсь скомпилировать этот бит кода. Затем он делает то, что делает обычный компилятор, и генерирует некоторый нативный код и

JIT часто работает вместе с интерпретатором. Интерпретатор находит, что что-то является циклом, а затем передает это в JIT и после цикла продолжает интерпретировать.

ИмплментацииJava и .NET не используют интерпретатор, это тоже возможно. У luajit, pypy и реализации JS в firefox действительно есть интерпретатор.

(Если вам нужен переводчик или нет, это предмет спора)

Надеюсь, это поможет.

...