Ruby 將引入新 JIT 編譯器:YJIT,平均速度提升 23%

snakesss發表於2021-11-02

近日,Ruby 程式碼倉庫新增了一個關於合併 YJIT 的PR。

據介紹,YJIT 是一種使用 Lazy Basic Block Versioning (LBBV) 編譯器架構構建的即時編譯器。

在進行實際基準測試時,YJIT 比當前的CRuby 直譯器平均速度提升了23%。

Ruby 開發團隊計劃將 YJIT 包含在 Ruby 3.1 預覽版中,以便更多使用者可以幫助他們對其進行測試,從而獲得效能提升。

目前 YJIT 預設處於禁用狀態,需要開啟--yjit 選項或設定 YJIT\_RUBY\_ENABLE=1 進行啟用。需要注意的是,YJIT 暫時只支援 macOS 和 Linux 系統和 x86-64 CPU 架構。

其他問題

  • 在不受支援的平臺上,Ruby 使用傳統的直譯器
  • 生成的程式碼沒有垃圾收集功能。超過設定的--yjit-exec-mem-size 數值就會報錯。開發團隊稱在未來幾個月內會解決此問題。
  • YJIT 在執行時會使用更多記憶體,因為它需要分配機器程式碼,可通過設定--yjit-exec-mem-size 的值進行調整
  • YJIT 不能與 MJIT 同時啟用,兩者中只有一個可以在執行時處於活動狀態。

相關文章