Facebook huet de Cinder Quellcode verëffentlecht dee vun Instagram benotzt gëtt

Facebook virgestallt kuerzem duerch e Post, de Quellcode vum Cinder Projet erausginn, dat ass eng Gabel vun der CPython Branche an d'Haaptreferenz Ëmsetzung vun der Python Programméierungssprooch.

Cinder an der Produktiounsinfrastruktur vu Facebook benotzt fir Instagram ze bedreiwen an enthält Optimisatiounen fir d'Performance ze verbesseren. De Code gouf publizéiert fir d'Méiglechkeet ze diskutéiere fäerdeg Optimiséierungen an de Mainstream vu CPython ze migréieren an aner CPython Performance Verbesserungsprojeten ze hëllefen.

Facebook ernimmt datt et Cinder net als separate Open Source Projet ënnerstëtzt an de Code gëtt a Form presentéiert an där en an der Infrastruktur vun der Firma benotzt gëtt, ouni zousätzlech Dokumentatioun.

Cinder promovéiert sech och net als Alternativ zum CPython - d'Haaptentwécklungsziel ass de CPython selwer ze verbesseren.

De Code vum Cinder gëtt als raisonnabel ugesinn a getest a Produktiounsëmfeld, awer wann Probleemer identifizéiert ginn, musse se eleng geléist ginn, well Facebook net garantéiert datt et op extern Feelermeldungen äntwert. an zitt Ufroen.

Zur selwechter Zäit schléisst Facebook keng konstruktiv Kooperatioun mat der Gemeinschaft aus a si prett fir Iddien ze diskutéieren wéi een Cinder nach méi séier maache kann oder wéi een den Transfert vu préparéierten Ännerungen an den Haaptkader vu CPython beschleunegt.

Déi Haaptoptimisatiounen, déi am Cinder implementéiert sinn, sinn:

  • Bytecode online Cache: D'Essenz vun der Method ass fir typesch Opcode Ausféierungssituatiounen z'identifizéieren déi dynamesch optimiséiert kënne ginn an dësen Opcode duerch méi séier spezialiséiert Optiounen ersetzen.
  • Routine Evaluatioun: Fir asynchrone Funktiounsruff déi direkt veraarbecht ginn, gëtt d'Resultat vun dëse Funktiounen direkt iwwerschratt ouni eng Coroutine ze kreéieren an ouni en Event Loop anzeruffen. Am Code benotzt vu Facebook, deen e staark benotzt, féiert d'Optimiséierung zu enger Beschleunegung vu ronn 5%.
  • Selektiv Kompiléierung vu JIT um Niveau vun eenzelne Methoden a Funktiounen: et gëtt vun der "-X jit" Optioun oder der Ëmweltvariabel PYTHONJIT = 1 aktivéiert an erlaabt vill Performance Tester vun 1,5 bis 4 Mol ze beschleunegen.
    D'Lëscht vun de Funktiounen fir déi JIT soll ageschalt ginn baséiert op de Resultater vum Profil. An der Zukunft gëtt d'Ënnerstëtzung fir dynamesch JIT Kompilatioun baséiert op interner Analyse vun der Funktiounsrufffrequenz erwaart, awer wann Dir d'Spezifizitéiten vu Startprozesser op Instagram berécksiichtegt, ass d'JIT Compilatioun och fir Facebook an der éischter Etapp gëeegent.
    De JIT konvertéiert als éischt de Python Bytecode an eng héich Tëscherapportatioun (HIR), déi raisonnabel no bei Python Bytecode ass, awer ass entwéckelt fir eng recordbaséiert virtuell Maschinn ze benotzen anstatt eng recordbaséiert virtuell Maschinn. Am Stack, an och benotzt Type Informatioun an zousätzlech Detailer relevant fir d'Leeschtung. Den HIR gëtt dann an eng Statesch Single Allocation (SSA) Form ëmgewandelt a mécht Optimiséierungsstufen baséiert op Referenzzuel an Erënnerungsverbrauchsdaten. Als Resultat gëtt eng niddereg Tëschenvertriedung (LIR) generéiert, déi no bei der Versammlungssprooch ass.
  • Strikt Modus fir Moduler:D'Funktionalitéit huet dräi Komponenten: De StrictModule Typ. E stateschen Analysator deen fäeg ass ze bestëmmen datt d'Ausféierung vun engem Modul keen Afloss op de Code ausserhalb vun deem Modul huet.
  • Statesche Python: ass en experimentellen Bytecode Compiler deen Typ Annotatiounen benotzt fir Bytecode ze generéieren déi spezifesch fir all Typ ass a méi séier duerch JIT Compilatioun leeft. A verschiddenen Tester weist d'Kombinatioun vu Static Python a JIT bis zu 7x Performance Verbesserung iwwer typesch CPython. A ville Situatiounen ginn d'Resultater evaluéiert wéi wann d'MyPyC an Cython Compiler benotzt goufen.

Endlech wann Dir interesséiert sidd de Cinder Code kënnen ze kréien oder léiert méi doriwwer, kënnt Dir de Detailer am folgende Link.


Den Inhalt vum Artikel hält sech un eis Prinzipie vun redaktionnell Ethik. Fir e Feeler ze mellen klickt hei.

Gitt d'éischt fir ze kommentéieren

Gitt Äre Kommentar

Är Email Adress gëtt net publizéiert ginn. Néideg Felder sinn markéiert mat *

*

*

  1. Responsabel fir d'Daten: Miguel Ángel Gatón
  2. Zweck vun den Donnéeën: Kontroll SPAM, Kommentarmanagement.
  3. Legitimatioun: Är Zoustëmmung
  4. Kommunikatioun vun den Donnéeën: D'Donnéeë ginn net un Drëttubidder matgedeelt ausser duerch legal Verpflichtung.
  5. Datenspeicher: Datebank gehost vun Occentus Networks (EU)
  6. Rechter: Zu all Moment kënnt Dir Är Informatioun limitéieren, recuperéieren an läschen.