Фејсбук го објави изворниот код Cinder кој го користи Instagram

Фејсбук откри неодамна преку објава, ослободување на изворниот код на проектот Cinder, што е вилушка на филијалата на Цајтон и главната референтна имплементација на програмскиот јазик Python.

Пепел се користи во производната инфраструктура на Фејсбук за напојување на Инстаграм и вклучува оптимизации за подобрување на перформансите. Кодот е објавен за да се дискутира можноста за мигрирање на готови оптимизации кон мејнстримот на CPython и да им се помогне на другите проекти за подобрување на перформансите на CPython.

Facebook споменува дека нема да го поддржува Cinder како посебен проект со отворен извор а кодот е претставен во формата што се користи во инфраструктурата на претпријатието, без дополнителна документација.

Cinder не се промовира ниту како алтернатива на CPython - главната развојна цел е да се подобри самиот CPython.

Кодот на Синдар се смета за разумно сигурен и тестирани во производствени средини, но ако се идентификуваат проблемите, тие ќе треба да се решат сами, бидејќи Фејсбук не гарантира дека ќе одговори на пораките за надворешна грешка и барања за повлекување.

Во исто време, Фејсбук не ја исклучува конструктивната соработка со заедницата и е подготвен да разговара за идеи за тоа како да се направи Cinder уште побрз или како да се забрза пренесувањето на подготвените промени во главната рамка на CPython.

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

  • Интернет-кеширање на Bytecode: Суштината на методот е да се идентификуваат типичните ситуации на извршување на опкод што можат да се оптимизираат и динамично да се замени тој опкод со побрзи специјализирани опции.
  • Рутинска проценка: За асинхрони повици со функции кои се обработуваат веднаш, резултатот од тие функции е директно заменет без создавање корутин и без повикување на јамка за настан. Во кодот што го користи Фејсбук, а кој многу го користи, оптимизацијата доведува до забрзување од околу 5%.
  • Селективна компилација на ЗИТ на ниво на индивидуални методи и функции: тоа е овозможено со опцијата „-X jit“ или променливата за околина PYTHONJIT = 1 и овозможува многу тестови за изведба да се забрзаат за 1,5 до 4 пати.
    Списокот на функции за кои треба да се овозможи JIT може да се одреди врз основа на резултатите од профилот. Во иднина, се очекува поддршка за динамична компилација на ЗИТ заснована врз внатрешна анализа на фреквенцијата на повици на функции, но имајќи ги предвид спецификите на процесите за стартување на Инстаграм, компилацијата на ЈИТ е исто така погодна за Фејсбук во почетната фаза
    ЈИТ најпрво го претвора Бајт-кодот на Пајтон во средно претставување на високо ниво (HIR), што е разумно близу до Бајт-кодот на Пајтон, но е дизајниран да користи виртуелна машина заснована на рекорди, наместо виртуелна машина заснована на записи. Во магацинот, и исто така користи дополнителни детали и информации за видот релевантни за перформансите. Потоа HIR се претвора во форма на статичка единечна распределба (SSA) и поминува низ фази на оптимизација засновано врз референтниот број и податоците за употреба на меморијата. Како резултат, се создава средно претставување на ниско ниво (LIR), што е близу до јазикот на склопот.
  • Строг режим за модули:Функционалноста има три компоненти: Тип StrictModule. Статички анализатор способен да утврди дека извршувањето на модулот не влијае на кодот надвор од тој модул.
  • Статички питон: е експериментален компајлер на бајт код кој користи коментари за типови за да генерира бајт код кој е специфичен за секој тип и работи побрзо низ компилацијата на JIT. Во некои тестови, комбинацијата на Static Python и JIT покажува до 7x подобрување на перформансите во однос на типичниот CPython. Во многу ситуации, резултатите се оценуваат како да се користени компајлерите MyPyC и Cython.

Конечно ако сте заинтересирани да можете да го добиете шифрата Cinder или дознајте повеќе за тоа, можете да се консултирате со детали на следниот линк.


Содржината на статијата се придржува до нашите принципи на уредничка етика. За да пријавите грешка, кликнете овде.

Биди прв да коментираш

Оставете го вашиот коментар

Вашата е-маил адреса нема да бидат објавени. Задолжителни полиња се означени со *

*

*

  1. Одговорен за податоците: Мигел Анхел Гатон
  2. Цел на податоците: Контролирајте СПАМ, управување со коментари.
  3. Легитимација: Ваша согласност
  4. Комуникација на податоците: Податоците нема да бидат соопштени на трети лица освен со законска обврска.
  5. Складирање на податоци: База на податоци хостирани од Occentus Networks (ЕУ)
  6. Права: Во секое време можете да ги ограничите, вратите и избришете вашите информации.