2012-01-04 5 views
1

Есть ли реальное преимущество от исполнения JIT Bytecode над собственным кодом наряду с возможной реализацией независимости платформы?Есть ли какое-либо реальное преимущество от исполнения JIT Bytecode над собственным кодом помимо переносимости? (General и OS-Design)

Очевидно, что языки, использующие «виртуальные машины» над исполнением JIT Bytecode, приписываются нескольким преимуществам. Но в какой степени это действительно повлияет на обсуждение преимуществ/недостатков собственного кода и выполнения JIT?

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

безопасности

среды выполнения VM может наблюдать за запущенным приложением, например переполнение буфера.

  • Итак, первый вопрос заключается в том, выполняется ли это «среда выполнения», например, библиотекой классов или во время выполнения JIT?

  • Проверка границ памяти существует также для собственных компиляторов кода. Любые другие/общие ограничения здесь?

Оптимизация

Классическая оптимизация должна быть возможность в родных компиляторов кода тоже. См. LLVM, который фактически использует сгенерированный бит-код для запуска оптимизации, перед компиляцией в собственный код.

  • Возможно, что-то вроде динамической оптимизации в JIT, например. идентифицируя вещи для оптимизации, связанные с контекстом выполнения. Возможно, возможно и для собственного компилятора, чтобы создать некоторый код для оптимизации выполнения во время выполнения. Но не знаю, реализовано ли что-то подобное.

  • Популярные реализации VM делают это - вопрос в том, действительно ли это оправдывает реальные преимущества по сравнению с собственным кодом.

Многопоточность

Я не cound это время нарезания резьбы также в VM зависит от собственной реализации темы ОС.

Если мы идентифицируем, что нет никакого реального преимущества над машинным кодом, и что всегда есть время выполнения недостаток в JIT ... чем это приводит к следующему вопросу:

делает дизайн операционной системы на основе выполнения JIT (например, Singularity, Cosmos, ...) имеют смысл?

Я мог бы определить один из преимуществ: ОС с этим дизайном не нуждается в MMU. Это означает, что нет раздельного процесса, использующего MMU, а разделение между объектами/компонентами в программном обеспечении. Но стоит ли это?

С наилучшими пожеланиями ;-)

+0

Что касается динамической оптимизации встроенным компилятором: если компилятор AOT «генерирует некоторый код для оптимизации выполнения во время выполнения», у вас уже есть JIT. И что JIT, безусловно, будет использовать более высокоуровневое описание программы, потому что это намного проще оптимизировать. Вы пробовали встраивать виртуальные вызовы, давая только машинный код (например, никакой информации о классах)? – delnan

+0

Хорошее возражение. Поэтому динамическая оптимизация, а также GC должны быть добавлены в мой список выше. Подумайте, чтобы ответить на него подробно, ему потребуется подробное измерение текущих реализаций ... –

ответ

1

Теоретически они могли воспользоваться платформой/CPU они работают на, чтобы собрать более быстрый код.

На практике я лично не сталкивался ни с одним случаем, когда это происходит на самом деле.

Но есть и другие проблемы. Языки более высокого уровня, которые компилируются в байт-код, также имеют сбор мусора, что очень полезно в некоторых доменах. Это не , потому что компилятора JIT как таковой, но наличие JITter делает его намного проще, потому что часто легче JITTER анализировать и вычислять, например. где указатели идут в стек и т. д.

+0

CLR JIT-компиляторы фактически генерируют разный код в зависимости от процессора, поскольку несколько лет: http://stackoverflow.com/questions/2405343/does-the- net-clr-really-optimize-for-the-current-processor – delnan

+0

@ delnan: Я сказал * быстрее * код, а не только * другой * код. Я лично никогда не видел, чтобы JITter оптимизировал код лучше, чем собственный компилятор, но, возможно, это из-за незнания с моей стороны, idk. – Mehrdad

+0

Прочтите вопрос. Большинство изменений касаются производительности. – delnan

 Смежные вопросы

  • Нет связанных вопросов^_^