LINUX.ORG.RU

История изменений

Исправление 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, как тормозная загрузка.