Код Java обычно распространяется как байт-код, который является машинно-независимым псевдокодом. (Та же идея ранее использовалась в системе UCSD-p, разработанной в 70-х годах.) Преимущество этого состоит в том, что одно и то же приложение можно запускать на разных процессорах и в разных операционных системах. Кроме того, байт-код часто меньше, чем у скомпилированного приложения.
Недостатком является то, что интерпретация кода выполняется медленно по сравнению с выполнением скомпилированного кода. Для решения этой проблемы был разработан JIT-компилятор. Компилятор JIT компилирует код в машинный код непосредственно перед выполнением кода. Это ускоряет выполнение по сравнению с интерпретатором, но при каждом запуске программы на компиляцию тратится дополнительное время. Кроме того, поскольку JIT-компилятор должен быстро компилироваться, он не может использовать сложные методы оптимизации, которые используются в статических компиляторах.
Другой подход - компиляция HotSpot. Сначала он запускается как интерпретатор, но затем определяет, какие процедуры используются чаще всего, и компилирует только те. Преимущество состоит в том, что нет начальной задержки из-за компиляции. Кроме того, компилятор HotSpot может выполнять профилирование во время выполнения, а затем производить более сильную оптимизацию для наиболее важных подпрограмм. Он может даже собирать информацию, чтобы, когда вы запускаете одно и то же приложение снова и снова, оно будет работать все быстрее и быстрее. Дополнительную информацию о компиляции HotSpot можно найти в этой статье (tnx Пангея по ссылке).
Конечно, вместо использования JIT-компилятора вы можете просто использовать статический компилятор для компиляции байт-кода для вашей машины. Это обеспечивает полную оптимизацию, и вам не нужно компилировать заново каждый раз при запуске приложения. Однако в телефонах и на веб-страницах вы часто просто выполняете код (или апплет) один раз, поэтому JIT-компилятор может быть лучшим выбором.
Обновить
Файлы байт-кода Python имеют расширение .py. Когда вы выполняете файл байт-кода, JIT-компилятор Python создает скомпилированный файл .pyc. В следующий раз, когда вы запустите ту же программу, если файл .py не изменился, нет необходимости компилировать его снова, вместо этого Python запускает ранее скомпилированный файл .pyc. Это ускоряет запуск программы.
person
PauliL
schedule
25.05.2010