Facebook ngaluarkeun kode sumber Cinder anu dianggo ku Instagram

Facebook diumumkeun nembé ngalangkungan tulisan, ngaleupaskeun kode sumber proyék Cinder, anu garpu cabang CPython sareng palaksanaan référénsi utama basa pamrograman Python.

Cinder dipaké dina infrastruktur produksi Facebook pikeun ngawasa Instagram sareng kalebet optimisasi kanggo ningkatkeun performa. Kodeu na parantos diterbitkeun pikeun ngabahas kamungkinan hijrah optimisasi siap pakai ka arus utama CPython sareng ngabantosan proyek paningkatan kinerja CPython anu sanés.

Facebook nyebatkeun yén éta moal ngadukung Cinder salaku proyék open source misah sareng kode na ditepikeun dina bentuk anu dianggo dina infrastruktur perusahaan, tanpa dokuméntasi tambihan.

Cinder sanés ngamajukeun dirina salaku alternatip pikeun CPython ogé - tujuan pangwangunan utami nyaéta ningkatkeun CPython sorangan.

Kodeu Cinder dianggap tiasa dipercaya sareng diuji dina lingkungan produksi, tapi upami masalah dikenal, aranjeunna bakal kedah direngsekeun nyalira, sabab Facebook henteu ngajamin yén éta bakal ngabales pesen kasalahan éksternal sareng narik pamundut.

Dina waktos anu sasarengan, Facebook henteu ngaluarkeun kerjasama anu konstruktif sareng masarakat sareng siap ngabahas ideu ngeunaan kumaha carana Cinder langkung gancang atanapi kumaha nyepetkeun transfer parobihan anu disiapkeun kana kerangka utama CPython.

Optimisasi utama anu dilaksanakeun di Cinder nyaéta:

  • Cache online Bytecode: Inti tina metode nyaéta pikeun ngaidentipikasi kaayaan palaksanaan opcode anu has anu tiasa dioptimalkeun sacara dinamis sareng ngagentos opcode éta ku pilihan khusus anu langkung gancang.
  • Evaluasi rutin: Pikeun panggero fungsi sinkronisasi anu langsung diolah, hasil tina fungsi-fungsi kasebut ditimpa langsung tanpa nyiptakeun coroutine sareng tanpa nganggo loop acara. Dina kode anu dianggo ku Facebook, anu dianggo beuratna, optimisasi ngabalukarkeun akselerasi sakitar 5%.
  • Kompilasi selektif JIT dina tingkatan metode sareng fungsi masing-masing: éta diaktipkeun ku pilihan "-X jit" atanapi variabel lingkungan PYTHONJIT = 1 sareng ngamungkinkeun anjeun nyepetkeun seueur tés kinerja 1,5 dugi ka 4 kali.
    Daptar fungsi anu kedah diaktipkeun JIT tiasa ditangtoskeun dumasar kana hasil profil. Di payun, dukungan kanggo kompilasi JIT dinamis dumasarkeun kana analisis internal frékuénsi telepon fungsi dipiharep, tapi ngémutan spésifikasi prosés peluncuran dina Instagram, kompilasi JIT ogé cocog pikeun Facebook dina tahap awal.
    JIT munggaran ngarobih bytecode Python janten perwakilan panengah tingkat luhur (HIR), anu cukup caket kana bytecode Python, tapi didesain pikeun nganggo mesin virtual berbasis rékor tibatan mesin virtual dumasar dina tumpukan, sareng ogé nganggo inpormasi jinis sareng detil tambahan anu aya hubunganana sareng kinerja. HIR teras dirobih kana bentuk Alokasi Single Statis (SSA) sareng ngalaman tahapan optimalisasi dumasar kana jumlah rujukan sareng data panggunaan memori. Hasilna, perwakilan panengah tingkat handap (LIR) dihasilkeun, anu caket kana basa rakitan.
  • Modeu ketat pikeun modul:Pungsina ngagaduhan tilu komponén: Jinis StrictModule. Penganalisis statis sanggup nangtoskeun yén palaksanaan modul henteu mangaruhan kode di luar modul éta.
  • Statis Python: mangrupikeun kompiler bytecode ékspérimén anu ngagunakeun jinis anotasi pikeun ngahasilkeun bytecode anu khusus pikeun tiap jenis sareng ngalir langkung gancang ngalangkungan kompilasi JIT. Dina sababaraha tés, gabungan Static Python sareng JIT nunjukkeun pamutahiran kinerja 7x tibatan CPython anu has. Dina seueur kaayaan, hasilna dievaluasi saolah-olah panyusun MyPyC sareng Cython dianggo.

tungtungna upami anjeun resep tiasa kéngingkeun kode Cinder atanapi terang langkung seueur ngeunaan éta, anjeun tiasa konsultasi ka detil dina tautan ieu.


Eusi tulisan taat kana prinsip urang tina étika éditorial. Pikeun ngalaporkeun kasalahan klik di dieu.

Janten kahiji komen

Ninggalkeun koméntar anjeun

email alamat anjeun moal diterbitkeun.

*

*

  1. Jawab data: Miguel Ángel Gatón
  2. Tujuan tina data: Kontrol SPAM, manajemén koméntar.
  3. Legitimasi: idin anjeun
  4. Komunikasi data: Data moal dikomunikasikan ka pihak katilu kacuali ku kawajiban hukum.
  5. Panyimpenan data: Basis data anu diayakeun ku Occentus Networks (EU)
  6. Hak: Iraha waé anjeun tiasa ngawatesan, cageur sareng mupus inpormasi anjeun.

bool (leres)