Facebook выпустил исходный код Cinder, который использует Instagram

Представлен Facebook недавно через сообщение, выпуск исходного кода проекта Cinder, который форк ветки CPython и основная эталонная реализация языка программирования Python.

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

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

Cinder также не продвигает себя как альтернативу CPython - основная цель разработки - улучшить сам CPython.

Код Cinder считается достаточно надежным и протестирован в производственных средах, но если проблемы будут выявлены, их нужно будет решить самостоятельно, поскольку Facebook не гарантирует, что он будет реагировать на внешние сообщения об ошибках. и запросы на вытягивание.

При этом Facebook не исключает конструктивного сотрудничества с сообществом и готов обсуждать идеи, как сделать Cinder еще быстрее или как ускорить перенос подготовленных изменений в основной фреймворк CPython.

Основные оптимизации, реализованные в Cinder:

  • Онлайн-кеширование байт-кода: Суть метода состоит в том, чтобы определить типичные ситуации выполнения кода операции, которые можно динамически оптимизировать, и заменить этот код операции более быстрыми специализированными параметрами.
  • Обычная оценка: Для вызовов асинхронных функций, которые обрабатываются немедленно, результат этих функций подставляется напрямую, без создания сопрограммы и без вызова цикла обработки событий. В коде, используемом Facebook, который он активно использует, оптимизация приводит к ускорению примерно на 5%.
  • Выборочная JIT-компиляция на уровне отдельных методов и функций: он включается параметром «-X jit» или переменной среды PYTHONJIT = 1 и позволяет ускорить многие тесты производительности в 1,5–4 раза.
    Список функций, для которых следует включить JIT, можно определить по результатам профиля. В будущем ожидается поддержка динамической JIT-компиляции на основе внутреннего анализа частоты вызовов функций, но, учитывая специфику процессов запуска в Instagram, JIT-компиляция также подходит для Facebook на начальном этапе.
    JIT сначала преобразует байт-код Python в высокоуровневое промежуточное представление (HIR), которое достаточно близко к байт-коду Python, но предназначено для использования виртуальной машины на основе записей, а не виртуальной машины на основе записей. Стек, а также использует дополнительная информация о типе и подробности, относящиеся к производительности. Затем HIR преобразуется в форму статического единого распределения (SSA) и проходит этапы оптимизации на основе данных счетчика ссылок и использования памяти. В результате создается низкоуровневое промежуточное представление (LIR), близкое к языку ассемблера.
  • Строгий режим для модулей:Функциональность состоит из трех компонентов: Тип StrictModule. Статический анализатор, способный определить, что выполнение модуля не влияет на код вне этого модуля.
  • Статический Python: - экспериментальный компилятор байт-кода, который использует аннотации типов для генерации байт-кода, специфичного для каждого типа, и быстрее выполняется посредством JIT-компиляции. В некоторых тестах комбинация Static Python и JIT демонстрирует повышение производительности до 7 раз по сравнению с обычным CPython. Во многих ситуациях результаты оцениваются так, как если бы использовались компиляторы MyPyC и Cython.

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


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.