История изменений
Исправление den73, (текущая версия) :
К слову, в SBCL тоже JIT. В качестве байткода .fasl.
Да, похоже я неверно понимал смысл термина JIT, считая, что там обязательно заложен профайлер и компиляция основана на результатах его работы.
Но я не думаю, что SBCL - это JIT, поскольку он не умеет исполнять байт-код. В CMU CL был исполнитель байт-кода, но его выпилили из SBCL. Согласно Википедии, JIT - «технология увеличения производительности программных систем, использующих байт-код, компиляции байт-кода в машинный код или в другой формат непосредственно во время работы программы.». Т.е., SBCL - это, как минимум, вырожденный случай. Обычный eval исполняет не байт-код, а непосредственно консы. и SBCL не компилирует фаслы, а делает с ними что-нибудь другое.
Также, если мы сохраняем исполняемый образ (как сделано в Яре), а не грузим фаслы, то у нас вообще нет никакой компиляции во время работы программы и это уже точно не JIT. Загрузка ускоряется раз в 10. Что и является прекрасной иллюстрацией такого недостатка JIT, как тормозная загрузка.
Исходная версия den73, :
К слову, в SBCL тоже JIT. В качестве байткода .fasl.
Да, похоже я неверно понимал смысл термина JIT, считая, что там обязательно заложен профайлер и компиляция основана на результатах его работы.
Но я не думаю, что SBCL - это JIT, поскольку он не умеет исполнять байт-код. В CMU CL был исполнитель байт-кода, но его выпилили из SBCL. Согласно Википедии, JIT - «технология увеличения производительности программных систем, использующих байт-код, ». Т.е., SBCL - это, как минимум, вырожденный случай. Обычный eval исполняет не байт-код, а непосредственно консы.
Также, если мы сохраняем исполняемый образ (как сделано в Яре), а не грузим фаслы, то загрузка ускоряется раз в 20. Что и является прекрасной иллюстрацией такого недостатка JIT, как тормозная загрузка.