Представлен HOPE, JIT-компилятор для языка Python, транслирующий в C++

20 октября 2014 года

Разработчики из Института астрономии и исследовательской лаборатории космологии Швейцарской высшей технической школы Цюриха открыли исходные тексты проекта HOPE, разработанного для ускорения выполнения программных систем на языке Python, используемых для астрономических вычислений. Код проекта распространяется под лицензией GPLv3.

HOPE представляет собой JIT-компилятор, оформленный в виде модуля на языке Python, транслирующий специально отмеченные блоки кода в представление на языке C++ и на лету компилирующий их в машинный код. При первом запуске Python-скрипта при помощи пакета setuptools и штатного C++ инструментария выполняется компиляция HOPE-блоков в форму разделяемой библиотеки, после чего результат кэшируется при последующих вызовах. Обрабатываемые при помощи HOPE функции помечаются специальным декоратором "@jit" или вызываются с использованием функции jit(), например:


from hope import jit

@jit
def poly(x, y, a):
x1 = x - a
y[:] = x1 + x1 * x1

или

def sum(x, y):
return x + y

sum_opt = jit(sum)

Внутри компилируемых функций допускается использование специального подмножества языка Python с поддержкой явного определения типов, предоставляющего достаточные возможности для научных вычислений. Выигрыш в производительности при использовании HOPE по сравнению с обычным Python может достигать(недоступная ссылка) десятков раз - скорость выполнения скомпилированных функций приближается по производительности к программам на С++.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Представлен HOPE, JIT-компилятор для языка Python, транслирующий в C++», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.