JRuby 的效能要往上衝了嗎?
今天看到 JRuby 作者的文章,大章是說他們已經完成了 JRuby 中針對 Ruby 1.8 的語法 JIT Compiler 的實作,也就是這些 ruby code 會在執行時產生對應用的 Java code ,然後讓 JVM 執行 compile 過後的 byte code,當然,這樣就完全可以利用 JVM 來最佳化了。不過目前還沒有釋出正式版本,要嚐鮮的人可以先用 svn 把 HEAD revision co 下來 build 吧~(預計 11 月要釋出的 JRuby 1.1 應該就會支援了)
另外,作者也提到了一些實作上的想法,因為 Ruby 1.8 本身還沒有很嚴格的 type checking 機制,所以目前產生對應的 Java code 時都是利用 java.lang.Object
來定義某參數、變數的 type,所以作者有提出一個方法來產生更合適的 Java code,比方說 ruby 的 class 寫成這樣:
[code lang=”ruby”]
class MyClass
…
{String => [Integer, Array]}
def mymethod(num, ary); end
end
[/code]
用一個 hash block 來描述一個 method 的 return type 及 arguments types,如此便可以產生出像這樣的 Java code:
[code lang=”java”]
public String mymethod(int num, List ary) {
…
}
[/code]
只不過這個方式還沒完全定案,但這樣的確比全部用 Object 硬幹要好得多了。
JRuby 真是太值得讓人期待了!