Facebook пусна изходния код на Cinder, който се използва от Instagram

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

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

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

Cinder също не се рекламира като алтернатива на CPython - основната цел на разработката е да подобри самия CPython.

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

В същото време Facebook не изключва конструктивно сътрудничество с общността и е готов да обсъди идеи за това как да направим Cinder още по-бърз или как да ускори прехвърлянето на подготвените промени в основната рамка на CPython.

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

  • Онлайн кеширане на байт кодове: Същността на метода е да идентифицира типични ситуации за изпълнение на opcode, които могат да бъдат динамично оптимизирани и да замени този opcode с по-бързи специализирани опции.
  • Рутинна оценка: За асинхронни извиквания на функции, които се обработват незабавно, резултатът от тези функции се заменя директно, без да се създава съпрограма и без да се извиква цикъл на събития. В кода, използван от 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. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.