Отслеживание своевременной компиляции
-
Компиляция «точно в срок»
- Метод оптимизации выполнения программ, записывая часто выполняемые операции в машинный код.
- Отличается от традиционных JIT-компиляторов, которые компилируют каждый метод.
-
Классификация JIT-компиляторов
- JIT-компиляторы на основе методов преобразуют каждый метод в машинный код.
- JIT-компиляторы трассировки используют циклы в качестве единицы компиляции.
-
Технические детали
- Профилирование циклов для выявления «горячих контуров».
- Фаза отслеживания записывает операции в трассировку, оптимизирует и компилирует её в машинный код.
- Защита в трассировке предотвращает выполнение кода, если условия не выполняются.
-
История и примеры
- Идея JITs восходит к 1960-м, но JIT-трассировка стала популярной недавно.
- DynamoRIO — первая реализация трассировки, которая генерирует оптимизированный код для часто выполняемых последовательностей команд.
- HotpathVM — первый трассирующий JIT-компилятор для языков высокого уровня, оптимизирующий байт-код.
- TraceMonkey — реализация Mozilla для JavaScript, компилирующая часто выполняемые циклы.
- PyPy использует трассировку JIT для повышения производительности интерпретатора.
- Microsoft SPUR — универсальный трассировщик для Common Intermediate Language.
-
Пример трассировки
- Трассировка для программы на Python, вычисляющей сумму квадратов до 100 000.
Полный текст статьи: