Facebook-ek Instagram-ek erabiltzen duen Cinder iturburu kodea kaleratu du

Facebook aurkeztu zen duela gutxi mezu baten bidez, Cinder proiektuaren iturburu kodea askatuz, Zein da CPython adarraren sardexka eta Python programazio lengoaiaren erreferentziazko ezarpen nagusia.

errauts Facebook-en ekoizpen azpiegituretan erabiltzen da Instagram bultzatzeko eta optimizazioak biltzen ditu errendimendua hobetzeko. Kodea argitaratu da prest egindako optimizazioak CPython-era joateko eta beste CPython errendimendua hobetzeko beste proiektu batzuei laguntzeko aukera aztertzeko.

Facebook-ek aipatzen du ez duela Cinder onartuko iturburu irekiko proiektu bereizi gisa eta kodea enpresaren azpiegituretan erabiltzen den moduan aurkezten da, dokumentazio osagarririk gabe.

Cinder-ek ere ez du bere burua CPython-en alternatiba gisa sustatzen - garapen helburu nagusia CPython bera hobetzea da.

Errauskailuaren kodea nahiko fidagarria dela uste da eta ekoizpen inguruneetan probatu, baina arazoak identifikatzen badira, beren kabuz konpondu beharko dira, Facebookek ez baitu bermatzen kanpoko errore mezuei erantzungo dienik eta tira eskaerak.

Aldi berean, Facebookek ez du komunitatearekin lankidetza eraikitzailea baztertzen eta prest dago Cinder are azkarrago egiteko edo prestatutako aldaketen transferentzia CPython esparru nagusira nola bizkortu jakiteko.

Cinder-en inplementatutako optimizazio nagusiak hauek dira:

  • Bytecode lineako cachea: Metodoaren funtsa dinamikoki optimiza daitezkeen opcode exekuzio egoera tipikoak identifikatzea eta opcode hori aukera espezializatu azkarragoekin ordezkatzea da.
  • Ohiko ebaluazioa: Berehala prozesatzen diren funtzio deialdi asinkronoen kasuan, funtzio horien emaitza zuzenean ordezkatzen da koroutina sortu gabe eta gertaera begizta bat deitu gabe. Facebook-ek erabiltzen duen kodean, asko erabiltzen du, optimizazioak% 5 inguruko azelerazioa dakar.
  • JIT bilketa selektiboa banakako metodo eta funtzioen mailan: "-X jit" aukerak edo PYTHONJIT = 1 inguruneko aldagaiak gaitzen du eta errendimendu proba asko 1,5 eta 4 aldiz azkartu daitezke.
    JIT gaitu beharreko funtzioen zerrenda profilaren emaitzen arabera zehaztu daiteke. Etorkizunean, funtzio deien maiztasunaren barne analisian oinarritutako JIT konpilazio dinamikorako laguntza espero da, baina Instagram-en abiarazte prozesuen berezitasunak kontuan hartuta, JIT konpilazioa Facebookerako ere egokia da hasierako fasean.
    JIT-ek lehenik Python-en bytecode bihurtzen du goi-mailako tarteko irudikapen (HIR), hau Python-en bytecode-tik nahiko gertu dago, baina erregistroan oinarritutako makina birtuala erabiltzeko diseinatuta dago, erregistroan oinarritutako makina birtuala baino. motako informazio osagarria eta errendimenduari dagozkion xehetasunak. Ondoren, HIRa Esleipen Bakarraren Estatikoa (SSA) inprimaki bihurtzen da eta optimizazio faseak egiten ditu erreferentzia zenbaketa eta memoria erabiltzeko datuetan oinarrituta. Ondorioz, maila baxuko tarteko irudikapena (LIR) sortzen da, hau da, mihiztadura-hizkuntzatik gertu dagoena.
  • Moduluetarako modu zorrotza:Funtzionalitateak hiru osagai ditu: StrictModule mota. Modulu baten exekuzioak modulu horretatik kanpoko kodean eragina ez duela zehazteko gai den aztertzaile estatikoa.
  • Python estatikoa: bytecode konpilatzaile esperimentala da, mota bakoitzeko bytecode sortzeko mota anotazioak erabiltzen dituena eta JIT konpilazioaren bidez azkarrago exekutatzen duena. Zenbait probatan, Static Python eta JIT konbinazioak 7x errendimendu hobekuntza erakusten du CPython tipikoaren aldean. Egoera askotan, emaitzak MyPyC eta Cython konpiladoreak erabiliko balira bezala ebaluatzen dira.

Bukatzeko Cinder kodea eskuratu ahal izateko interesa baduzu edo horri buruz gehiago jakiteko, kontsultatu dezakezu xehetasunak ondoko estekan.


Artikuluaren edukia gure printzipioekin bat dator etika editoriala. Akats baten berri emateko egin klik hemen.

Idatzi lehenengo iruzkina

Utzi zure iruzkina

Zure helbide elektronikoa ez da argitaratuko. Beharrezko eremuak markatuta daude *

*

*

  1. Datuen arduraduna: Miguel Ángel Gatón
  2. Datuen xedea: SPAM kontrolatzea, iruzkinen kudeaketa.
  3. Legitimazioa: Zure baimena
  4. Datuen komunikazioa: datuak ez zaizkie hirugarrenei jakinaraziko legezko betebeharrez izan ezik.
  5. Datuak biltegiratzea: Occentus Networks-ek (EB) ostatatutako datu-basea
  6. Eskubideak: Edonoiz zure informazioa mugatu, berreskuratu eta ezabatu dezakezu.