Компилятор Python переводит скрипты со скоростью C/C++

    0
    78

    Увеличиваем скорость работы Python до уровня C++

    Python — один из самых популярных языков программирования, но, как правило, это не лучший выбор, когда требуется скорость.

    Хотя его можно оптимизировать для повышения производительности, Python ценится за другие качества, помимо скорости, такие как удобочитаемость, управляемая кривая обучения, обширная экосистема и полезность как в академических кругах, так и в бизнесе.

    Компьютерщики Массачусетского технологического института и их коллеги, однако, считают, что они нашли способ получить все это — доступность языка высокого уровня со скоростью языка низкого уровня. Они разработали компилятор Python под названием Codon, который превращает код Python в собственный машинный код без снижения производительности во время выполнения.

    «Обычное ускорение по сравнению с Python составляет порядка 10–100 раз и более в одном потоке», — говорится в репозитории Codon. «Производительность Codon обычно соответствует (а иногда и лучше) производительности C/C++».

    Есть загвоздка, конечно. Codon реализует большую часть, но не весь язык Python. Некоторые модули Python не были включены в Codon. И в нем отсутствуют такие функции, как динамическая обработка типов и отражение во время выполнения, которые усложняют анализ и оптимизацию кода. При этом он может полагаться на механизм компилятора со статической типизацией, который в сочетании с другими инновациями, такими как более оптимизируемое и гибкое промежуточное представление (IR) [PDF] – генерирует более быстрый код.

    Codon изначально разрабатывался как платформа для создания высокопроизводительных предметно-ориентированных языков (DSL) в Python. DSL — это языки, ориентированные на конкретную цель, в отличие от языка программирования общего назначения, такого как Python или C. Примеры DSL включают CSS, SQL и древние руны.

    Основанный на Seq, DSL для биоинформатики и генетики, Codon превратился в языковой компилятор, в значительной степени совместимый с Python 3. Как описано в статье, в преддверии запланированного на 16 марта выпуска «Codon: компилятор для высокопроизводительных приложений Python и DSL» набор инструментов «позволяет разрабатывать DSL, которые используют синтаксис и семантику Python вместе с дополнительными функциями, специфичными для предметной области, и оптимизацией IR».

    Авторы статьи – Ария Шаджии (Exaloop), Габриэль Рамирес (MIT CSAIL), Харис Смайлович (Университет Виктории, Канада), Джессика Рэй (MIT CSAIL), Бонни Бергер (MIT CSAIL), Саман Амарасингхе (MIT CSAIL) и Ибрагим Нуманагич (Университет Виктории) — говорят, что, поскольку Codon может выводить собственный машинный код без каких-либо накладных расходов во время выполнения Python, они могут достичь производительности, подобной C, со сценариями Python.

    «В отличие от других ориентированных на производительность реализаций Python (таких как PyPy или Numba), Codon создается с нуля как автономная система, которая заблаговременно компилируется в статический исполняемый файл и не привязана к существующей среде выполнения Python (например, CPython или RPython) для выполнения», — говорится в документе. «В результате Codon может добиться более высокой производительности и решить проблемы, характерные для среды выполнения, такие как глобальная блокировка интерпретатора».

    Вместо того, чтобы полностью переписывать код на таком языке, как C, Codon может использовать ту же реализацию Python и обеспечивать ту же производительность, которую вы получите, переписав код на C.

    Авторы обсуждают различные высокопроизводительные DSL на основе Codon, разработанные для биоинформатики, сжатия данных и параллельного программирования, которые используют преимущества инфраструктуры компилятора Codon. Но Codon также может существенно ускорить стандартные программы Python, хотя те, которые полагаются на внешние библиотеки, такие как Django или DocUtils, должны полагаться на мост CPython, который ограничивает производительность CPython. Например, на форуме Codon некоторые предприимчивые разработчики сообщают, что простой скрипт Фибоначчи, скомпилированный с помощью Codon, работал более чем в 70 раз быстрее, чем версия CPython.

    Профессор Массачусетского технологического института и главный исследователь CSAIL Саман Амарасингхе сообщил службе новостей Массачусетского технологического института в выпуске, предоставленном Регистр что Python часто используется экспертами в предметной области, которые не являются экспертами в области программирования и не оптимизировали свои приложения для повышения производительности.

    «Вместо того, чтобы переписывать программу с помощью библиотеки, реализованной на C, такой как numpy, или полностью переписывать на таком языке, как C, Codon может использовать ту же реализацию Python и обеспечивать ту же производительность, которую вы получите, переписав на C», — объяснил Амарасингхе. «Поэтому я считаю, что Codon — это самый простой путь вперед для успешных приложений Python, которые достигли предела из-за низкой производительности».

    Нам сказали, что Codon уже используется в коммерческих целях в различных областях, от количественных финансов и биоинформатики до глубокого обучения. И в ближайшие месяцы ожидайте, что разработчики Codon реализуют некоторые недостающие функции Python.

    Предыдущая статьяChatGPT изобрел новую умную игру, которая может заставить Вас отказаться от Wordle
    Следующая статьяKirby’s Return To Dream Land Deluxe: White Wafers – Этап 2
    Виктор Попанов
    Эксперт тестовой лаборатории. Первый джойстик держал в руках в возрасте 3 лет. Первый компьютер, на котором „работал” был с процессором Intel i386DX-266. Тестирует оборудование для издания ITBusiness. Будь то анализ новейших гаджетов или устранение сложных неполадок, этот автор всегда готов к выполнению поставленной задачи. Его страсть к технологиям и приверженность качеству делают его бесценным помощником в любой команде.