近日,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 同時啟用,兩者中只有一個可以在執行時處於活動狀態。