Как JIT-компилятор помогает производительности приложений? - PullRequest
6 голосов
/ 13 мая 2010

Я только что прочитал, что Android имеет улучшение производительности 450%, потому что он добавил JIT-компилятор , я знаю, что такое JIT, но я не совсем понимаю, почему он быстрее, чем обычный скомпилированный код? или в чем разница с более старым подходом от платформы Android (Java, например, запускает скомпилированный байт-код).

Спасибо!

РЕДАКТИРОВАТЬ: Это очень интересно, спасибо! Я хотел бы выбрать каждый ответ как правильный:)

Ответы [ 4 ]

5 голосов
/ 13 мая 2010

Во-первых, отказ от ответственности, я совсем не знаком с Android. Во всяком случае ...

Есть два приложения JIT-компиляции, с которыми я знаком. Одним из них является преобразование из байт-кодов в фактические машинные инструкции. Второй - Супероптимизация .

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

JIT superoptimsation, которая ищет действительно оптимальный набор инструкций для реализации логики программ, немного более эзотерична. Вероятно, это не то, о чем вы говорите, хотя я прочитал отчеты о том, что в результате скорость увеличивается на 200%.

3 голосов
/ 13 мая 2010

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

Виртуальная машина Java столкнулась с аналогичным ускорением, когда as-версии виртуальной машины заменили первоначальные версии интерпретатора.

2 голосов
/ 13 мая 2010

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

Именно поэтому он может работать быстрее, чем традиционная система Java, где код запускался только как байт-код, который также использовал Android.

1 голос
/ 13 мая 2010

Помимо компиляции Java-кода в нативный код, что можно сделать и с помощью компилятора, JIT выполняет оптимизацию, которую вы можете выполнять только во время выполнения.

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

...