Skip to content

Instantly share code, notes, and snippets.

@savanovich
Last active August 18, 2021 10:08
Show Gist options
  • Select an option

  • Save savanovich/835b48170fe1eda0c58f to your computer and use it in GitHub Desktop.

Select an option

Save savanovich/835b48170fe1eda0c58f to your computer and use it in GitHub Desktop.

Revisions

  1. savanovich revised this gist Feb 4, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion jit_vs_aot.rst
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    **JIT** Just-in-time compilation динамическая компиляция. Технология увеличения производительности программ, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы. Так достигается высокая скорость выполнения по сравнению с интерпретируемым байт-кодом (сравнимая с компилируемыми языками) **за счёт увеличения потребления памяти** (для хранения результатов компиляции) и **затрат времени на компиляцию**. Из-за того что компиляция произходит во время исполнения **можно проводить различные оптимизации**, например, компиляция может осуществляться непосредственно для целевого CPU и операционной системы (SSE, MMX), `profile-guided optimizations <http://en.wikipedia.org/wiki/Profile-guided_optimization>`_ - cреда может собирать статистику о работающей программе и производить оптимизации с учётом этой информации; cреда может делать глобальные оптимизации кода (встраивание библиотечных функций в код, pseudo-constant propagation или indirect/virtual function inlining); перестраивание кода для лучшего использования кэша.

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

    **AOT** Ahead-of-time compilation. Процесс компиляции полностью выполняется перед выполнением программы. АОТ не требует выделения дополнительной памяти. АОТ компиляция проходит с минимальной нагрузкой на систему. Хорошо подходит для встроенных систем или mobile устройств.

  2. savanovich revised this gist Feb 4, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion jit_vs_aot.rst
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    **JIT** Just-in-time compilation динамическая компиляция. Технология увеличения производительности программ, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы. Так достигается высокая скорость выполнения по сравнению с интерпретируемым байт-кодом (сравнимая с компилируемыми языками) **за счёт увеличения потребления памяти** (для хранения результатов компиляции) и **затрат времени на компиляцию**. Из-за того что компиляция произходит во время исполнения **можно проводить различные оптимизации**, например, компиляция может осуществляться непосредственно для целевого CPU и операционной системы (SSE, MMX), `profile-guided optimizations <http://en.wikipedia.org/wiki/Profile-guided_optimization>`_ - cреда может собирать статистику о работающей программе и производить оптимизации с учётом этой информации; cреда может делать глобальные оптимизации кода (встраивание библиотечных функций в код, pseudo-constant propagation или indirect/virtual function inlining); перестраивание кода для лучшего использования кэша.

    **Tracing JIT** s a technique used by virtual machines to optimize the execution of a program at runtime. This is done by recording a linear sequence of frequently executed operations, compiling them to native machine code and executing them. This is opposed to traditional just-in-time (JIT) compilers that work on a per-method basis.
    **Tracing JIT** в отличе от классического JIT записывает линейную последовательность наиболее часто используемых операций, компилрует их в нативные машинные инструкции, а затем выполняет. Этим он отличается от классического JIT компилятора, который компилирует методы целиком.

    **AOT** Ahead-of-time compilation. Процесс компиляции полностью выполняется перед выполнением программы. АОТ не требует выделения дополнительной памяти. АОТ компиляция проходит с минимальной нагрузкой на систему. Хорошо подходит для встроенных систем или mobile устройств.

  3. savanovich created this gist Feb 4, 2016.
    21 changes: 21 additions & 0 deletions jit_vs_aot.rst
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    **JIT** Just-in-time compilation динамическая компиляция. Технология увеличения производительности программ, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы. Так достигается высокая скорость выполнения по сравнению с интерпретируемым байт-кодом (сравнимая с компилируемыми языками) **за счёт увеличения потребления памяти** (для хранения результатов компиляции) и **затрат времени на компиляцию**. Из-за того что компиляция произходит во время исполнения **можно проводить различные оптимизации**, например, компиляция может осуществляться непосредственно для целевого CPU и операционной системы (SSE, MMX), `profile-guided optimizations <http://en.wikipedia.org/wiki/Profile-guided_optimization>`_ - cреда может собирать статистику о работающей программе и производить оптимизации с учётом этой информации; cреда может делать глобальные оптимизации кода (встраивание библиотечных функций в код, pseudo-constant propagation или indirect/virtual function inlining); перестраивание кода для лучшего использования кэша.

    **Tracing JIT** s a technique used by virtual machines to optimize the execution of a program at runtime. This is done by recording a linear sequence of frequently executed operations, compiling them to native machine code and executing them. This is opposed to traditional just-in-time (JIT) compilers that work on a per-method basis.

    **AOT** Ahead-of-time compilation. Процесс компиляции полностью выполняется перед выполнением программы. АОТ не требует выделения дополнительной памяти. АОТ компиляция проходит с минимальной нагрузкой на систему. Хорошо подходит для встроенных систем или mobile устройств.

    Примеры
    --------

    Python, Ruby - интерпретируемый байт-кодом (минимальные оптимизации)

    PyPy (via RPython), `HOPE <http://pythonhosted.org/hope/index.html>`_, Dalvik (Android), Java, .Net - JIT

    ART (заменит Dalvik), Mono AOT, GNU Compiler for Java - AOT

    Lua, Pyston, JavaScript V8 - Tracing JIT

    Misc
    ------------

    Just-In-Time Compilation Using GCC: `Video <https://www.youtube.com/watch?gl=CA&list=PLOGTP9W1DX5U53pPxtWdKkyiqe3GAn6Nd&v=XsaDtUkPu34>`_, `Slides <http://dmalcolm.fedorapeople.org/presentations/cauldron-2014/jit/>`_, `Wiki <https://gcc.gnu.org/wiki/JIT>`_