„Facebook“ išleido „Cinder“ šaltinio kodą, kurį naudoja „Instagram“

„Facebook“ pristatė neseniai per pranešimą, išleidžiant „Cinder“ projekto šaltinio kodą, kuris yra „CPython“ šakos šakutė ir pagrindinis informacinis „Python“ programavimo kalbos įgyvendinimas.

žarijos naudojamas „Facebook“ gamybos infrastruktūroje „Instagram“ valdymui ir apima optimizavimą, siekiant pagerinti našumą. Kodas buvo paskelbtas siekiant aptarti paruoštas optimizavimo galimybes perkelti į pagrindinę „CPython“ dalį ir padėti kitiems „CPython“ našumo tobulinimo projektams.

„Facebook“ užsimena, kad nepalaikys „Cinder“ kaip atskiro atvirojo kodo projekto ir kodas pateikiamas tokia forma, kokia jis naudojamas įmonės infrastruktūroje, be papildomų dokumentų.

„Cinder“ taip pat nereklamuoja kaip alternatyva „CPython“ - pagrindinis plėtros tikslas yra patobulinti patį „CPython“.

„Cinder“ kodas laikomas pakankamai patikimu ir išbandyta gamybos aplinkoje, tačiau jei bus nustatytos problemos, jas reikės išspręsti savarankiškai, nes „Facebook“ negarantuoja, kad ji atsakys į išorinius klaidų pranešimus ir traukti prašymus.

Tuo pačiu metu „Facebook“ neatmeta konstruktyvaus bendradarbiavimo su bendruomene ir yra pasirengęs aptarti idėjas, kaip „Cinder“ padaryti dar greitesnį arba kaip paspartinti paruoštų pakeitimų perkėlimą į pagrindinę „CPython“ sistemą.

Pagrindinės „Cinder“ įdiegtos optimizacijos yra:

  • „Bytecode“ internetinis talpinimas: Metodo esmė yra nustatyti tipines opcode vykdymo situacijas, kurias galima dinamiškai optimizuoti, ir pakeisti tą opcode greitesnėmis specializuotomis parinktimis.
  • Įprastas įvertinimas: Asinchroninių funkcijų iškvietimams, kurie apdorojami nedelsiant, tų funkcijų rezultatas yra tiesiogiai pakeičiamas, nesukuriant korutino ir neprašant įvykių ciklo. „Facebook“ naudojamame kode, kurį jis labai naudoja, optimizavimas lemia maždaug 5% pagreitį.
  • Atrankinis JIT sudarymas atskirų metodų ir funkcijų lygiu: jį įgalina parinktis „-X jit“ arba aplinkos kintamasis PYTHONJIT = 1 ir leidžia daugelį veiklos testų pagreitinti 1,5–4 kartus.
    Funkcijų, kurioms turėtų būti įjungtas JIT, sąrašą galima nustatyti pagal profilio rezultatus. Ateityje tikimasi palaikyti dinaminį JIT kompiliavimą, pagrįstą vidine funkcijų skambučių dažnio analize, tačiau, atsižvelgiant į paleidimo procesų „Instagram“ ypatumus, JIT kompiliacija taip pat tinka „Facebook“ pradiniame etape.
    JIT pirmiausia konvertuoja „Python“ baitų kodą į aukšto lygio tarpinį atvaizdavimą (HIR), kuris yra pakankamai artimas „Python“ baitų kodui, tačiau sukurtas naudoti įrašų virtualią mašiną, o ne įrašų virtualią mašiną. naudoja tipo informaciją ir papildomą informaciją, susijusią su atlikimu. Tada HIR paverčiama į statinio vieno paskirstymo (SSA) formą ir jam atliekami optimizavimo etapai, remiantis atskaitos skaičiumi ir atminties naudojimo duomenimis. Dėl to susidaro žemo lygio tarpinis atvaizdavimas (LIR), kuris yra artimas surinkimo kalbai.
  • Griežtas modulių režimas:Funkcijoje yra trys komponentai: „StrictModule“ tipas. Statinis analizatorius, galintis nustatyti, kad modulio vykdymas neturi įtakos kodui už to modulio.
  • Statinis „Python“: yra eksperimentinis bytecode kompiliatorius, kuris naudoja tipo anotacijas, kad generuotų kiekvienam tipui būdingą ir greičiau per JIT kompiliaciją veikiantį bytecode. Kai kuriuose bandymuose „Static Python“ ir JIT derinys rodo iki 7 kartų didesnį našumą, palyginti su įprastu „CPython“. Daugeliu atvejų rezultatai vertinami taip, lyg būtų naudojami MyPyC ir Cython kompiliatoriai.

Pagaliau jei norite sužinoti „Cinder“ kodą arba sužinokite daugiau apie tai, galite kreiptis į išsami informacija šioje nuorodoje.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.