JRuby的效能最佳化(update)

來源:互聯網
上載者:User

越來越覺的JRuby是個很有前途的項目,結合Ruby的性感文法和java極其豐富的類庫,況且有團隊持續不斷地修正bug、改進效能,這樣的玩意完全有成為“少男殺手”的潛質。JRuby wiki上列出了效能最佳化的四條建議:

1、調優編譯器,JRuby早就棄暗投明跟隨XRuby走上了編譯這條牛B的道路,將Ruby Script編譯成位元組碼,因此這個環節是斷斷不能忽略的。

兩種編譯方式:

AOT模式:直接產生class檔案,脫了Ruby這層皮,咱就是人見人“愛”的java了。

JIT模式:充分利用成熟的jit技術,咱不全脫,朦朧美才是真的美。預設從0.9.9版本開始就是開啟的,關閉的話(要我說還不如全脫)

jruby-J-Djruby.jit.enabled=false

2、關閉ObjectSpace

ObjectSpace是Ruby用來操作所有運行時對象的模組,這個功能相當牛x。這個的實現在c ruby裡是比較容易的,但是對於JRuby代價就比較昂貴了,其實就大部分情況下你基本用不到這個東東,那麼最好就是關閉它,JRuby提供了

jruby-J-Djruby.objectspace.enabled=false

選項來關閉它。

3、開啟線程池

我們知道,在c ruby中的線程是綠色的輕量級線程,因此運行時就動不動開個百來十個“線程”跑一跑充下款爺;然而在JRuby中,線程的實現那可是實打實的本地線程(也就是Ruby線程與java線程一比一),你這麼動不動上百個線程那不慢才怪了。因此JRuby提供了線程池選項,運行時儘可能地滿足你的要求開線程,但是當短命的Ruby線程重複建立的時候,這些線程將被複用,這在大多數情況下能提高效能表現,特別是在每次調用都啟動一個線程的情況下。不過具體效果還是要測試的實際資料說話。

jruby-J-Djruby.thread.pooling=true

4、使用Java "server"模式虛擬機器,地球淫都知道

jruby-J-servermyscript.rb

5、盡量使用最新的jdk,在我的測試中,jdk6跑jruby是效率最高的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.