實驗性質的JIT compiler(Ruby2.6)

Ruby2.6的一個新的功能:Just in time complier

特色:

和傳統的JIT編譯器不同之處:把代碼寫成C並存儲在磁盤,並使用一個C編譯器來生成native code。這樣就節省了運行時間。改善了Ruby程序的執行效率。git

 

傳統的編譯器如bootsnap會在第一次運行一個Ruby Script時,把YARV instruciton存到disk。以後還運行這個腳本就省略了parse和complie的過程,直接使用YARV instruction。這會提高大概30%的運行速度。ruby

 

使用MJIT編譯YARN instruction

(M是開發者的名字)它會對已存在的YARV instruction進行操做,以提高運行速度。app

當YARV instruction 存在後,RubyVM會在運行時把那些instruction轉化成native code(用於操做系統和cpu)。spa

一個Ruby程序運行的70%的時間都是這個process花費的。這是一筆很大的時間佔用。操作系統

因此JIT編譯器出現了。它的做用是把YARV instruction轉化成的C語言代碼存在disk上。當一個YARV instruction再次出現,直接使用對應的C代碼和C編譯器來生成native code。這樣就節省了時間。code

 

注意:⚠️orm

實驗性質的功能。Rails不會從中受益。blog

many other memory-intensive workloads like Rails applications might not benefit from it at the moment.

 

 

使用:

$ruby -v //是2.6.0以上版本
$ruby --git test.rb //使用--git-verbose=1 在terminal上打印出additional information。

 

//或者用環境變量
$RUBYOPT="--jit" rails s
相關文章
相關標籤/搜索