Python3.13 Just in time compilation

В новой версии Python будет возможность включить встроенный JIT-компилятор, собрав из исходников с флагом —enable-experimental-jit. Этот механизм позволит автоматически компилировать функции с счетными операциями, что значительно повысит их производительность.

Нововведение можно опробовать, установив предварительную версию Python 3.13.0rc2-jit. Важно отметить, что эта возможность пока находится на стадии разработки, и говорить о её полной стабильности и широком применении ещё рано.

На скриншоте приведены два примера функций, которые выполняют возведение инкрементируемой переменной цикла в степень самой себя:

  • Нативный Python способен выполнить эту функцию около 10 000 раз за 6 секунд.
  • Та же функция, обернутая в декоратор numba.jit, за те же 6 секунд способна обработать около 18 миллиардов итераций.

Такое резкое увеличение производительности связано с тем, что JIT-компилятор предварительно компилирует cpu bound код, что значительно ускоряет выполнение счётных операций.

Основное отличие встроенного JIT от декоратора numba.jit заключается в том, первый не требует явного указания типов данных, что упрощает его использование для большинства разработчиков. При этом, JIT-компиляция в Numba требует явного объявления типов для достижения максимальной эффективности.

Что касается производительности встроенного в 3.13 JIT, свежие бенчмарки показывают прирост в различных задачах от 1.02x до 3.42x по сравнении с версией Python 3.10.4 (faster-cpython) Однако этот прирост сильно зависит от типа задачи и интенсивности операций с числами.

Python3.13 Just in time compilation | Сетка — социальная сеть от hh.ru Python3.13 Just in time compilation | Сетка — социальная сеть от hh.ru