Last active
August 18, 2021 10:08
-
-
Save savanovich/835b48170fe1eda0c58f to your computer and use it in GitHub Desktop.
Revisions
-
savanovich revised this gist
Feb 4, 2016 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal 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, который компилирует методы целиком. **AOT** Ahead-of-time compilation. Процесс компиляции полностью выполняется перед выполнением программы. АОТ не требует выделения дополнительной памяти. АОТ компиляция проходит с минимальной нагрузкой на систему. Хорошо подходит для встроенных систем или mobile устройств. -
savanovich revised this gist
Feb 4, 2016 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal 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 компилятора, который компилирует методы целиком. **AOT** Ahead-of-time compilation. Процесс компиляции полностью выполняется перед выполнением программы. АОТ не требует выделения дополнительной памяти. АОТ компиляция проходит с минимальной нагрузкой на систему. Хорошо подходит для встроенных систем или mobile устройств. -
savanovich created this gist
Feb 4, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal 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>`_