Facebook, Instagram tarafından kullanılan Cinder kaynak kodunu yayınladı

Facebook açıklandı son zamanlarda bir gönderi aracılığıyla, Cinder projesinin kaynak kodunu serbest bırakmak, hangisi CPython dalının bir çatalı ve Python programlama dilinin ana referans uygulaması.

kül Instagram'ı güçlendirmek için Facebook'un üretim altyapısında kullanıldı ve performansı iyileştirmek için optimizasyonlar içerir. Kod, hazır optimizasyonları ana akım CPython'a taşıma olasılığını tartışmak ve diğer CPython performans geliştirme projelerine yardımcı olmak için yayınlandı.

Facebook, Cinder'ı ayrı bir açık kaynak projesi olarak desteklemeyeceğinden bahsediyor kod, ek bir dokümantasyon olmaksızın şirket altyapısında kullanıldığı şekilde sunulur.

Cinder ayrıca CPython'a alternatif olarak kendisini tanıtmıyor - ana geliştirme hedefi CPython'u iyileştirmektir.

Cinder'in kodu makul derecede güvenilir kabul edilir ve üretim ortamlarında test edildi, ancak Sorunlar tespit edilirse, Facebook harici hata mesajlarına yanıt vereceğini garanti etmediğinden, bunların kendi başlarına çözülmesi gerekecektir. ve çekme istekleri.

Aynı zamanda Facebook, toplulukla yapıcı işbirliğini dışlamaz ve Cinder'in nasıl daha hızlı yapılacağı veya hazırlanan değişikliklerin ana CPython çerçevesine aktarımının nasıl hızlandırılacağı konusundaki fikirleri tartışmaya hazırdır.

Cinder'da uygulanan ana optimizasyonlar şunlardır:

  • Bytecode çevrimiçi önbelleğe alma: Yöntemin özü, dinamik olarak optimize edilebilen tipik işlem kodu yürütme durumlarını tanımlamak ve bu işlem kodunu daha hızlı özel seçeneklerle değiştirmektir.
  • Rutin değerlendirme: Hemen işlenen eşzamansız işlev çağrıları için, bu işlevlerin sonucu, bir eşdizim oluşturmadan ve bir olay döngüsünü çağırmadan doğrudan ikame edilir. Yoğun bir şekilde kullandığı Facebook'un kullandığı kodda optimizasyon yaklaşık% 5'lik bir hızlanma sağlıyor.
  • Bireysel yöntemler ve işlevler düzeyinde seçici JIT derlemesi: "-X jit" seçeneği veya ortam değişkeni PYTHONJIT = 1 ile etkinleştirilir ve birçok performans testinin 1,5 ila 4 kat hızlandırılmasına izin verir.
    JIT'in etkinleştirilmesi gereken işlevlerin listesi, profilin sonuçlarına göre belirlenebilir. Gelecekte, işlev çağrı sıklığının dahili analizine dayalı dinamik JIT derlemesi için destek bekleniyor, ancak Instagram'daki başlatma işlemlerinin özellikleri göz önünde bulundurulduğunda, JIT derlemesi de ilk aşamada Facebook için uygundur.
    JIT, ilk olarak Python'un bayt kodunu, Python'un bayt koduna makul ölçüde yakın olan, ancak kayıt tabanlı bir sanal makine yerine kayıt tabanlı bir sanal makine kullanmak üzere tasarlanmış olan yüksek seviyeli bir ara gösterime (HIR) dönüştürür. Yığın halinde ve ayrıca tür bilgilerini ve performansla ilgili ek ayrıntıları kullanır. HIR daha sonra Statik Tek Tahsis (SSA) formuna dönüştürülür ve referans sayısı ve bellek kullanım verilerine dayalı optimizasyon aşamalarından geçer. Sonuç olarak, assembly diline yakın olan düşük seviyeli bir ara temsil (LIR) oluşturulur.
  • Modüller için katı mod:İşlevselliğin üç bileşeni vardır: StrictModule türü. Bir modülün yürütülmesinin o modül dışındaki kodu etkilemediğini belirleyebilen statik bir analizör.
  • Statik Python: her türe özgü bayt kodu oluşturmak için tür ek açıklamalarını kullanan ve JIT derlemesi aracılığıyla daha hızlı çalışan deneysel bir bayt kodu derleyicisidir. Bazı testlerde, Static Python ve JIT kombinasyonu, tipik CPython'a göre 7 kata kadar performans artışı gösterir. Çoğu durumda sonuçlar, MyPyC ve Cython derleyicileri kullanılmış gibi değerlendirilir.

Nihayet Cinder kodunu almakla ilgileniyorsanız veya bunun hakkında daha fazla bilgi edinin, danışabilirsiniz. ayrıntılar aşağıdaki bağlantıda.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.