Facebook открыл код форка CPython для Instagram

21.05.2021      108809

Компания Facebook выложила в открытый доступ исходный код Cinder. Он обеспечивает работу Instagram и включает инструменты оптимизации, которые позволили нарастить производительность платформы.

Что такое Cinder

Cinder – это форк проекта CPython версии 3.8.5. Он доступен в репозитории на GitHub. Проект выложили «как есть» – без подробной документации, местами с комментариями и мелкими недостатками, которые встречаются в любом рабочем коде. Cinder достаточно надежный, но если в процессе использования возникнут проблемы, решать их придется самостоятельно.

В Facebook подчеркнули: Cinder – попытка улучшить CPython, но не альтернатива ему. Компания заявила, что не планирует поддерживать Cinder как платформу с открытым исходным кодом.

Создатели Cinder надеются, что созданные ими оптимизации однажды смогут войти в основную ветку CPython. Они также помогут другим командам, которые развивают проект и стремятся улучшить его производительность.

Чем Cinder отличается от CPython

Проект CPython считают эталонной реализацией Python. Это интерпретатор байт-кода, написанный на языке С. Его развитием занимаются разработчики во главе с создателем Python Гвидо ван Россумом.

В Cinder реализовано Inline-кэширование байткода. Интерпретатор находит фрагменты программы, которые можно оптимизировать, и динамически заменяет их на ускоренные варианты. Чем больше в вашем коде повторяющихся вызовов функций, тем потенциально сильнее такое кэширование поможет ускорить программу.

Также форк поддерживает активное вычисление сопрограмм. При асинхронных вызовах функций, код которых обрабатывается сразу и не поддерживает команду await, проект не будет создавать сопрограмму или привлекать обработчик событий в цикле. Он сразу подставит результат работы функции в нужное место. В Facebook подсчитали, что в коде Instagram такая оптимизация обеспечивает 5% рост скорости работы.

Зачем нужна выборочная JIT-компиляция в Cinder

В проекте на Cinder можно включить выборочную JIT-компиляцию на уровне отдельных функций и методов класса. Для этого нужно либо установить значение переменной окружения PYTHONJIT=1, либо использовать опцию -X jit при сборке.

При такой компиляции JIT преобразует байткод Python в HIR (высокоуровневое промежуточное представление). Но если стандартный байткод использует стековую виртуальную машину, то HIR – регистровую. Кроме того, представление учитывает данные о типах и другую информацию, важную для определения производительности кода.

В свою очередь, HIR преобразуется в SSA (static single assignment) – представление, в котором каждой переменной единожды присваивается значение. После нескольких стадий оптимизации создается низкоуровневое представление (LIR). Из него в итоге и создаются ассемблерные инструкции.

Разработчики подсчитали, что в результате JIT-компиляции тесты производительности будут выполняться в 1,5-4 раза эффективнее. Также можно указать список функций, для которых выполняется такая компиляция.

Для Cinder доступен экспериментальный компилятор Static Python. В отдельных случаях его использование совместно с JIT обеспечивает 7-кратный выигрыш в производительности в сравнении с CPython.


Автор:
Обозреватель


См. также

Новость Искусственный интеллект ИТ-Новость

В 2024 году «Сколково» выделит пилотным проектам в сфере искусственного интеллекта гранты на общую сумму 554 млн рублей. В результате отбора финансирование получат проекты с применением ИИ в областях производства, операционной деятельности и в работе предоставляемых сервисов.

12.04.2024    860    AnastasiaKl    3       

3

Новость ИТ-Новость

Пятничное: в России вступил в силу стандарт подготовки по дисциплине «спортивное программирование». В стандарт вошли требования к физическим показателям спортсменов и скорости набора текста.

16.02.2024    815    VKuser24342747    2       

1

Новость ИТ-Новость

Федеральное агентство по техническому регулированию и метрологии (Росстандарт) утвердило национальный стандарт протокола LoRaWAN RU, таким образом он получил официальный статус. Технология используется для беспроводной передачи данных между устройствами интернета вещей.

19.01.2024    595    VKuser24342747    0       

2

Новость Законодательство ИТ-Новость

12 декабря вступил в силу Федеральный закон, меняющий срок, к которому все владельцы сайтов должны внести изменения в порядок авторизации пользователей на сайте. Закон вводит переходный период до 1 января 2025 года.

20.12.2023    757    VKuser24342747    2       

1

Новость Мобильные приложения ИТ-Новость

Новая версия Android Studio под номером 2023.1 получила имя Hedgehog. Появились возможности контролировать производительность приложений и управлять подключенными устройствами.

07.12.2023    961    VKuser24342747    2       

3

Новость GitHub ИТ-Новость

GitHub собрал данные об Open Source проектах в рамках ежегодного исследования Octoverse. Компания изучила географию репозиториев, используемые языки программирования и нейросети, а также активность сообщества.

15.11.2023    607    VKuser24342747    1       

2

Новость ИТ-компания ИТ-Новость

Компания «Сбер» заявила, что будет бесплатно предоставлять доступ к API нейросети для генерации текста GigaChat для некоммерческих проектов. Однако для них будет ограничено число доступных токенов.

01.11.2023    770    VKuser24342747    2       

3

Новость ИТ-Новость Программист

Вышла новая версия Geany 2.0. Обновление затронуло внешний вид программы, расширило поддержку файлов и сторонних проектов, добавило новые способы работы с кодом.

25.10.2023    791    VKuser24342747    0       

1
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение