相比我的朋友的机器,我在jRuby上执行脚本,特别是运行rake任务或测试时需要等待很长时间。我尝试过jRuby 1.3.1和1.4.1版本,有无ruby-debug gem,但每个配置都出现了同样的问题。
问题很简单: 有没有办法改善jRuby的加载过程? 还是我的jvm配置或jRuby安装出了问题(我使用rvm - ruby version manager来使用jRuby)?
相比我的朋友的机器,我在jRuby上执行脚本,特别是运行rake任务或测试时需要等待很长时间。我尝试过jRuby 1.3.1和1.4.1版本,有无ruby-debug gem,但每个配置都出现了同样的问题。
问题很简单: 有没有办法改善jRuby的加载过程? 还是我的jvm配置或jRuby安装出了问题(我使用rvm - ruby version manager来使用jRuby)?
你可以尝试以下几个方法:
jruby --ng
命令运行您的脚本)。然而,对于JRuby来说,测试和脚本确实是最坏的情况。 JRuby运行时本身已经相当沉重,比MRI要重得多。仅仅将整个程序从磁盘加载到内存中的时间就可能比在MRI中运行相同的脚本要长。我们甚至还没有加上JVM的启动时间!
同时,确保您在运行JVM时使用的是客户端模式(假设您正在使用Sun的JVM),因为该模式提供更快的启动速度和更好的性能,适用于测试套件等方面。默认情况下,JRuby应该使用客户端模式的JVM,但这取决于系统和JVM设置等因素。要验证您是否正在使用客户端JVM,请调用jruby -v命令,您应该看到类似以下内容:
Java HotSpot(TM) *Client* VM 1.6.0_18
更新: 请查看Charles的博客文章,其中包含改善启动时间的技巧:http://blog.headius.com/2010/03/jruby-startup-time-tips.html
--dev
标志,可以将多个快速选项组合在一起。我在Rails 5和JRuby 9.1.7.0上运行了我的模型测试,性能提升了80%以上!$ time rspec spec/models
Finished in 2.85 seconds (files took 10.63 seconds to load)
86 examples, 0 failures
rspec spec/models 57.79s user 1.14s system 288% cpu 20.425 total
$ time JRUBY_OPTS=--dev rspec spec/models
Finished in 1.4 seconds (files took 4.15 seconds to load)
86 examples, 0 failures
JRUBY_OPTS=--dev rspec spec/models 11.51s user 0.48s system 139% cpu 8.600 total
-G
来包含 bundle exec
。# Makefile
tests:
JRUBY_OPTS='--dev -G' rspec
$ make tests
来源:https://github.com/jruby/jruby/wiki/Improving-startup-time