Facebook發布了Instagram使用的Cinder源代碼

Facebook揭幕 最近通過帖子, 釋放Cinder項目的源代碼,這是 CPython分支的分支 以及Python編程語言的主要參考實現。

煤渣 在Facebook的生產基礎架構中用於為Instagram提供動力 並進行了優化以提高性能。 該代碼已經發布,討論了將現成的優化移植到CPython主流的可能性,並幫助其他CPython性能改進項目。

Facebook提到它將不支持將Cinder作為單獨的開源項目 並且代碼以在公司基礎架構中使用的形式呈現,而沒有其他文檔。

Cinder也沒有推廣自己作為CPython的替代品-主要的開發目標是改進CPython本身。

Cinder的代碼被認為是合理可靠的 並在生產環境中進行了測試,但是 如果發現問題,則需要自行解決,因為Facebook不保證會響應外部錯誤消息 並拉取請求。

同時,Facebook並不排除與社區的建設性合作,並準備討論有關如何使Cinder更快或如何加快將準備好的變更轉移到CPython主框架的想法。

Cinder中實現的主要優化是:

  • 字節碼在線緩存: 該方法的本質是確定可以動態優化的典型操作碼執行情況,並用更快的專用選項替換該操作碼。
  • 例行評估: 對於立即處理的異步函數調用,這些函數的結果將直接被覆蓋,而無需創建協程並且不調用事件循環。 在Facebook大量使用的代碼中,優化導致了大約5%的加速。
  • 在各個方法和功能級別上的JIT選擇性編譯: 可以通過“ -X jit”選項或環境變量PYTHONJIT = 1啟用它,並使您可以將許多性能測試速度提高1,5到4倍。
    可以根據配置文件的結果確定應啟用JIT的功能列表。 將來,期望基於對函數調用頻率的內部分析來支持動態JIT編譯,但是考慮到Instagram上啟動過程的具體細節,JIT編譯在初期也適用於Facebook。
    JIT首先將Python的字節碼轉換為高級中間表示(HIR),該中間表示與Python的字節碼相當接近,但設計為使用基於記錄的虛擬機,而不是基於堆棧的虛擬機,並且還使用類型信息以及與性能相關的其他詳細信息。 然後,將HIR轉換為靜態單一分配(SSA)形式,並根據參考計數和內存使用情況數據進行優化階段。 結果,生成了一個低級的中間表示(LIR),它接近彙編語言。
  • 嚴格模式下的模塊:該功能包含三個組件:StrictModule類型。 能夠確定模塊的執行不影響該模塊外部代碼的靜態分析器。
  • 靜態Python: 是一個實驗性字節碼編譯器,它使用類型註釋來生成特定於每種類型的字節碼,並通過JIT編譯運行得更快。 在某些測試中,靜態Python和JIT的結合展示了比典型CPython最高7倍的性能提升。 在許多情況下,就像使用MyPyC和Cython編譯器一樣對結果進行評估。

終於 如果您有興趣獲得Cinder代碼 或了解更多相關信息,可以諮詢 以下鏈接中提供了詳細信息。


成為第一個發表評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。