1/10/2008

JRuby 1.1 RC1 Release

本文

JRuby 1.1 RC1 Release!!!
正如之前所看到的消息,JRuby 1.1 跟 JRuby 1.0 最大的改進就是在 Performance 的不同,速度上比起 1.0.2 約有 27% 的改善,主要的改進有兩個

1. JRuby 可以用 Ahead Of Time (AOT) 或是 Just In Time (JIT) 兩種模式進行 compile。
2. JRuby 使用 Oniguruma 的 JRuby porting Juni,當作 Regular Expression 的 Engine。

總之,恭喜 JRuby Team。

下載:http://dist.codehaus.org/jruby/



本文結束後的講古,爆米花請準備好

說到 JRuby 的 regular expression ,可有說不完的故事(可以看 InfoQ版本)。

早期 JRuby 原本使用 Java 1.4 以後內建的 regex ,雖然很簡單,但是以一個目標是 Ruby 1.8 compatiable 的 project 來說,Java 內建的 regex 不合用。為了解決這個問題, JRuby Team 改採用 JRegex ,並且也納入了 JRuby 1.0 裡面。

但是 JRegex 某些細節跟 Ruby Regex 不太類似,依舊傷害了JRuby 對於 MRI Ruby 的兼容性 ,而且 JRegex 以 Java 的程式來說,已經算很快了,但是依舊不夠快速。 JRuby Team 在測試JRuby 跑 Rails 的時候,他們發現 regular expression 成為顯著的 Bottleneck。
And I found that there was one in particular that had really interesting performance when comparing MRI to JRuby. In fact, it was between 200 and a 1000 times slower. What's worse, the performance wasn't linear.
所以他們決定使用更快的 Regular Expression Engine 來徹底解決 JRuby on Rails 的效能問題。他們選中了 Oniguruma 這個 Ruby 的 regular expression Engine,這是 Ruby 1.9 內建的新 Regular Expression Engine。

Oniguruma 看來難念,其實是日本字,意思是鬼車,不過比起鬼車,我比較喜歡對岸的講法 XD
O ni guru ma
哦 , 你 咕噜 吗?
真的好記很多。Oniguruma 支援多個 charset 的 regular expression,已經是一個成熟的 regular expression engine。所以 JRuby Team 選擇了 Oniguruma 當作新的目標,將他 Porting 成 JRuby 版本,並且將他改名為 Juni。後來發現 Juni 相對於 JRegex ,的確對於 JRuby 帶來了顯著的效能上升

1 則留言:

youngten 提到...


O ni guru ma
哦 , 你 咕噜 吗?


哈!好笑,好玩
嘿!我喜歡