@daniil14056

Почему виртуальная машина байт-кода работает почти так же быстр, как программа машинного кода?

Сколько не натыкался на замеры производительности то почти всегда где-то на уровне +-20% разницы.
Хотя интуитивно ожидаешь разницы в скорости в 2+ раза, то есть транслирование 1 интсрукции байт кода в машинный код примерно в 2+(сама интерпретация инструкции + выполнение этой интерпретации) раза должно увеличивать продолжительность выполнения этой инструкции.
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
@rPman
Есть такая вещь как jit компиляция, когда ваша логика собирается в нативный бинарный код прямо по ходу исполнения, даже виртуальные машины этим пользуются, позволяет короткие блоки кода оптимизировать до 100% производительности, а накладные расходы на компиляцию в соседнем потоке.

К примеру говорят что llvm ExecutionEngine JIT может работать даже быстрее собранного в нативный код бинарника (наверное особенности оптимизаций, которые легче сделать в jit)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Любые ответы на любые вопросы
Потому что современные что java, что js обрабатываются jit-компилятором - байткод перегоняется в машинный код крупными оптимизированными кусками.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы