莊周夢蝶

          生活、程序、未來
             :: 首頁 ::  ::  :: 聚合  :: 管理

          JRuby的性能優化(update)

          Posted on 2008-01-31 18:58 dennis 閱讀(4420) 評論(1)  編輯  收藏 所屬分類: 動態語言java
              越來越覺的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-server myscript.rb

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


          評論

          # re: JRuby的性能優化  回復  更多評論   

          2008-02-17 12:48 by 93tto
          不錯……
          主站蜘蛛池模板: 满洲里市| 新巴尔虎左旗| 贵南县| 汉川市| 葵青区| 贡山| 疏勒县| 错那县| 温州市| 竹北市| 郴州市| 东乡族自治县| 昭通市| 宁安市| 绥棱县| 文登市| 合川市| 绥德县| 台中县| 广宗县| 安新县| 赣榆县| 兴和县| 宁波市| 望奎县| 澜沧| 贞丰县| 舞阳县| 宝坻区| 彰化市| 峡江县| 福海县| 香格里拉县| 习水县| 夏津县| 高清| 长兴县| 龙州县| 石嘴山市| 泉州市| 梅州市|