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

21.05.2021      108861

Компания 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.


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


См. также

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

ИИ научат разработке цифровых интегральных микросхем – несколько российских научных институтов заявили об участии в проекте. Проект рассчитан на 3 года – с 2024 по 2026.

23.07.2024    198    user1915669    0       

1

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

Развитие искусственного интеллекта и цифровых сервисов в России стало причиной роста потребности в мощных центрах обработки данных. Эксперты прогнозируют, что дефицит ЦОД, который уже наблюдается сегодня, в ближайшие годы будет только усиливаться.

18.07.2024    357    AnastasiaKl    0       

1

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

В сентябре 2024 года видеоигры в России начнут маркировать – пока на добровольной основе. Геймерам будут сообщать о семи видах чувствительного (неприятного) контента в игре.

17.07.2024    410    user1915669    0       

1

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

Депутаты Госдумы работают над законопроектом по ужесточению контроля за электросамокатами. Среди мер: обязательная регистрация СИМ (средств индивидуальной мобильности) и разработка системы отслеживания их перемещений.

10.07.2024    522    AnastasiaKl    2       

1

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

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

12.04.2024    1057    AnastasiaKl    3       

3

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

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

16.02.2024    859    VKuser24342747    2       

1

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

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

19.01.2024    652    VKuser24342747    0       

2

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

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

20.12.2023    796    VKuser24342747    2       

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