JRuby性能优化的四点建议

发表于:2011-2-15 10:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:庄周梦蝶    来源:51Testing软件测试网采编

  越来越觉的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性能优化技巧。

jruby -J-server myscript.rb

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号