Facebook izlaida Cinder avota kodu, ko izmanto Instagram

Facebook atklāja nesen, izmantojot pastu, atbrīvojot Cinder projekta pirmkodu, kurš ir CPython filiāles dakša un Python programmēšanas valodas galvenā atsauces ieviešana.

Plēnes ko izmanto Facebook ražošanas infrastruktūrā, lai darbinātu Instagram un ietver optimizāciju, lai uzlabotu veiktspēju. Kods ir publicēts, lai apspriestu gatavu optimizāciju migrēšanas iespēju uz CPython galveno plūsmu un palīdzētu citiem CPython veiktspējas uzlabošanas projektiem.

Facebook min, ka tas neatbalstīs Cinder kā atsevišķu atvērtā koda projektu un kods tiek uzrādīts tādā formā, kādā tas tiek izmantots uzņēmuma infrastruktūrā, bez papildu dokumentācijas.

Cinder arī nepopularizē sevi kā alternatīvu CPython - galvenais attīstības mērķis ir uzlabot pašu CPython.

Cindera kods tiek uzskatīts par pietiekami uzticamu un pārbaudīti ražošanas vidēs, bet ja tiek konstatētas problēmas, tās būs jāatrisina pašiem, jo ​​Facebook negarantē, ka reaģēs uz ārējiem kļūdu ziņojumiem un velciet pieprasījumus.

Tajā pašā laikā Facebook neizslēdz konstruktīvu sadarbību ar sabiedrību un ir gatavs apspriest idejas par to, kā padarīt Cinder vēl ātrāku vai kā paātrināt sagatavoto izmaiņu pārsūtīšanu uz galveno CPython sistēmu.

Galvenās Cinder ieviestās optimizācijas ir:

  • Bytecode tiešsaistes kešatmiņa: Metodes būtība ir noteikt tipiskas opcode izpildes situācijas, kuras var dinamiski optimizēt, un aizstāt šo opcode ar ātrākām specializētām opcijām.
  • Parastā novērtēšana: Asinhrono funkciju izsaukumiem, kas tiek apstrādāti nekavējoties, šo funkciju rezultāts tiek tieši aizstāts, neveidojot korutīnu un neizsaucot notikumu loku. Facebook izmantotajā kodā, ko tas ļoti izmanto, optimizācija noved pie aptuveni 5% paātrinājuma.
  • Selektīvā JIT apkopošana atsevišķu metožu un funkciju līmenī: to iespējo opcija "-X jit" vai vides mainīgais PYTHONJIT = 1 un ļauj daudzus veiktspējas testus paātrināt 1,5 līdz 4 reizes.
    Funkciju sarakstu, kurām jāiespējo JIT, var noteikt, pamatojoties uz profila rezultātiem. Nākotnē ir gaidāms atbalsts dinamiskai JIT apkopošanai, kuras pamatā ir funkciju izsaukumu biežuma iekšēja analīze, taču, ņemot vērā palaišanas procesu specifiku Instagram, JIT kompilācija sākotnējā posmā ir piemērota arī Facebook.
    JIT vispirms pārveido Python baitkodu par augsta līmeņa starpstāvējumu (HIR), kas ir samērā tuvu Python baitkodam, bet ir paredzēts, lai izmantotu ierakstu virtuālo mašīnu, nevis virtuālo mašīnu. papildu tipa informācija un informācija, kas attiecas uz veiktspēju. Pēc tam HIR tiek pārveidots par statiskas vienreizējas piešķiršanas (SSA) formu un tiek pakļauts optimizācijas posmiem, pamatojoties uz atsauces skaitu un atmiņas izmantošanas datiem. Rezultātā tiek ģenerēts zema līmeņa starpposma attēlojums (LIR), kas ir tuvu montāžas valodai.
  • Stingrs režīms moduļiem:Funkcionalitātei ir trīs sastāvdaļas: StrictModule tips. Statiskais analizators, kas spēj noteikt, ka moduļa izpilde neietekmē kodu ārpus šī moduļa.
  • Statiskais Python: ir eksperimentāls bytecode kompilators, kas izmanto tipa anotācijas, lai ģenerētu katram tipam specifisku baitkodu, kas darbojas ātrāk, izmantojot JIT kompilāciju. Dažos testos Static Python un JIT kombinācija parāda līdz pat 7x veiktspējas uzlabošanos salīdzinājumā ar tipisko CPython. Daudzās situācijās rezultāti tiek vērtēti tā, it kā tiktu izmantoti MyPyC un Cython kompilatori.

Beidzot ja jūs interesē iespēja iegūt Cinder kodu vai uzziniet vairāk par to, varat iepazīties ar sīkāka informācija šajā saitē.


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.