Facebook avaldas Cinderi lähtekoodi, mida Instagram kasutab

Facebook avalikustas hiljuti postituse kaudu, projekti Cinder lähtekoodi vabastamine, mis on haru CPython ja Pythoni programmeerimiskeele peamine referentsrakendus.

Tuhka kasutatakse Facebooki tootmise infrastruktuuris Instagrami toiteks ning sisaldab optimeerimisi jõudluse parandamiseks. Kood on avaldatud selleks, et arutada valmisoptimeeringute üleviimise võimalust CPythoni peavoolu ja aidata teisi CPythoni jõudluse parandamise projekte.

Facebook mainib, et ta ei toeta Cinderit eraldi avatud lähtekoodiga projektina ja kood esitatakse kujul, milles seda kasutatakse ettevõtte infrastruktuuris, ilma täiendava dokumentatsioonita.

Ka Cinder ei propageeri ennast CPythoni alternatiivina - peamine arenduseesmärk on CPythoni enda täiustamine.

Sindri koodi peetakse mõistlikult usaldusväärseks ja katsetatud tootmiskeskkondades, kuid kui probleemid tuvastatakse, tuleb need ise lahendada, kuna Facebook ei taga, et ta reageerib välistele veateadetele ja tõmmake taotlusi.

Samal ajal ei välista Facebook konstruktiivset koostööd kogukonnaga ja on valmis arutama ideid, kuidas muuta Cinder veelgi kiiremaks või kuidas kiirendada ettevalmistatud muudatuste üleviimist CPythoni põhiraamistikku.

Peamised Cinderis rakendatud optimeerimised on:

  • Bytecode'i vahemällu salvestamine: Meetodi põhiolemus on tuvastada tüüpilised opcode'i täitmise olukorrad, mida saab dünaamiliselt optimeerida, ja asendada see opcode kiiremate spetsialiseeritud valikutega.
  • Rutiinne hindamine: Kohe töödeldavate asünkroonsete funktsioonikõnede korral tühistatakse nende funktsioonide tulemus otse, ilma et tekitataks korutiini ja kutsumata sündmuse tsüklit. Facebooki kasutatavas koodis, mida ta palju kasutab, viib optimeerimine kiirenduse umbes 5% -ni.
  • Ühise uurimisrühma valikuline koostamine üksikute meetodite ja funktsioonide tasandil: see on lubatud valiku "-X jit" või keskkonnamuutuja PYTHONJIT = 1 abil ja võimaldab teil kiirendada paljusid jõudlusteste 1,5 kuni 4 korda.
    Funktsioonide loetelu, mille jaoks JIT peaks olema lubatud, saab määrata profiili tulemuste põhjal. Tulevikus on oodata funktsiooni kõnesageduse siseanalüüsil põhineva dünaamilise JIT-i kompileerimise tuge, kuid arvestades Instagrami käivitamisprotsesside eripära, sobib JIT-i kompileerimine algstaadiumis ka Facebookile.
    Esmalt teisendab JIT Pythoni baitkoodi kõrgetasemeliseks vaheesituseks (HIR), mis on küllaltki lähedane Pythoni baitkoodile, kuid on mõeldud rekordipõhise virtuaalse masina, mitte virnas baseeruva virtuaalmasina kasutamiseks, ning kasutab ka tüübiinfot ja täiendavaid üksikasju, mis on seotud jõudlusega. Seejärel teisendatakse HIR staatiliseks ühekordse eraldamise (SSA) vormiks ja see läbib optimeerimise etapid, tuginedes võrdlusarvule ja mälukasutuse andmetele. Selle tulemusel genereeritakse madala taseme vaheesitus (LIR), mis on lähedane assamblee keelele.
  • Range režiim moodulite jaoks:Funktsionaalsusel on kolm komponenti: StrictModule tüüp. Staatiline analüsaator, mis suudab kindlaks teha, et mooduli käivitamine ei mõjuta väljaspool seda moodulit asuvat koodi.
  • Staatiline Python: on eksperimentaalne baidekoodikompilaator, mis kasutab tüübimärkusi igale tüübile omase ja JIT-kompileerimise kaudu kiiremini töötava baidekoodi genereerimiseks. Mõnes testis näitab Static Pythoni ja JIT-i kombinatsioon kuni 7x jõudluse paranemist võrreldes tüüpilise CPythoniga. Paljudes olukordades hinnatakse tulemusi nii, nagu oleks kasutatud MyPyC ja Cythoni kompilaatoreid.

Lõpuks kui olete huvitatud Cinder'i koodi hankimisest või saate selle kohta lisateavet üksikasjad järgmisel lingil.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.