Фацебоок је објавио изворни код Циндер који користи Инстаграм

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

Циндер користи се у Фацебоок-овој производној инфраструктури за покретање Инстаграма и укључује оптимизације за побољшање перформанси. Код је објављен како би се разговарало о могућности преноса готових оптимизација на главни ток ЦПитхона и како би се помогло осталим пројектима за побољшање перформанси ЦПитхона.

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

Ни Циндер се не промовише као алтернатива ЦПитхон-у - главни развојни циљ је побољшање самог ЦПитхона.

Циндер-ов код се сматра прилично поузданим и тестиран у производним окружењима, али ако се утврде проблеми, мораће да се реше сами, јер Фацебоок не гарантује да ће одговорити на спољне поруке о грешкама и повуци захтеве.

У исто време, Фацебоок не искључује конструктивну сарадњу са заједницом и спреман је да разговара о идејама како да Циндер буде још бржи или како да убрза пренос припремљених промена у главни оквир ЦПитхона.

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

  • Мрежно предмеморирање битецоде-а: Суштина методе је идентификација типичних ситуација извршавања опцодеа које се могу динамички оптимизовати и замена тог опцодеа бржим специјализованим опцијама.
  • Рутинска процена: За позиве асинхроних функција који се одмах обрађују, резултат тих функција се поништава директно без стварања короутине и без позивања петље догађаја. У коду који користи Фацебоок, а који он јако користи, оптимизација доводи до убрзања од око 5%.
  • Селективна компилација ЈИТ-а на нивоу појединачних метода и функција: омогућена је опцијом "-Кс јит" или променљивом окружења ПИТХОЊИТ = 1 и омогућава вам убрзање многих тестова перформанси за 1,5 до 4 пута.
    Списак функција за које треба омогућити ЈИТ може се одредити на основу резултата профила. У будућности се очекује подршка за динамичку ЈИТ компилацију на основу интерне анализе фреквенције позива функције, али с обзиром на специфичности процеса покретања на Инстаграму, ЈИТ компилација је погодна и за Фацебоок у почетној фази.
    ЈИТ прво претвара Питхонов бајт код у средњи приказ на високом нивоу (ХИР), који је разумно близак Питхоновом бајт коду, али је дизајниран да користи виртуелну машину засновану на запису, а не виртуелну машину засновану на запису. користи информације о типу и додатне детаље релевантне за перформансе. Затим се ХИР претвара у облик статичке појединачне алокације (ССА) и пролази кроз фазе оптимизације на основу броја референци и података о коришћењу меморије. Као резултат, генерише се посредни приказ на ниском нивоу (ЛИР), који је близак асемблерском језику.
  • Строги режим за модуле:Функционалност има три компоненте: тип СтрицтМодуле. Статички анализатор способан да утврди да извршење модула не утиче на код изван тог модула.
  • Статични Питхон: је експериментални компајлер бајт-кода који користи напомене о типу за генерисање бајт-кода који је специфичан за сваки тип и брже се одвија кроз ЈИТ компилацију. У неким тестовима, комбинација Статиц Питхон-а и ЈИТ-а показује до 7 пута побољшање перформанси у односу на типични ЦПитхон. У многим се ситуацијама резултати процењују као да су коришћени МиПиЦ и Цитхон компајлери.

Коначно ако сте заинтересовани за могућност добијања Циндер кода или да бисте сазнали више о томе, можете се обратити детаљи у следећем линку.


Будите први који ће коментарисати

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

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

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