ruby - 如何改善 jRuby 加载时间?

标签 ruby performance jvm jruby

我必须等待相当长的时间(与我 friend 的机器相比)才能在 jRuby 上执行脚本,尤其是当我运行 rake 任务或测试时。我已经尝试过 jRuby 版本 1.3.1 和 1.4.1 有和没有 ruby​​-debug gem,并且在每个配置中都出现了同样的问题。

问题很简单: 有什么方法可以改进 jRuby 加载过程吗? ..或者我的 jvm 配置或 jRuby 安装有问题(我通过 rvm - ruby​​ 版本管理器使用 jRuby)?

最佳答案

您可以尝试以下几种方法:

  • 使用最新最好的 JRuby 版本(由于广泛的测试套件,即使是最前沿的 git master 分支通常也相当稳定),它们不断在启动时间上工作
  • 明智地选择你的 JVM,例如 Oracle JRockit 是面向服务器的,因此启动性能不是问题(无论如何,这些应用程序每隔几年才重新启动一次),Sun 在过去十年中主要忽视了桌面或所以,但自 1.6u12(尝试最近发布的 1.6u18)和 1.7 以来一直变得更好。据说 IBM 的 J9 也非常轻便。
  • 尝试 nailgun,这是一个让 JVM 在后台作为守护进程运行的项目(JRuby 中有内置支持,尝试使用 jruby --ng 运行脚本)
  • 只是不要将 JRuby 用于单元测试和抽取任务:例如,ThoughtWorks Mingle 团队将 MRI 用于单元测试、抽取任务和开发,将 JRuby 用于集成测试、回归测试和生产。 (这显然只有在您的 rake 任务和测试中不使用任何 Java 库时才有效。)

但是,测试和脚本 JRuby 的最坏情况。 JRuby 运行时单独 已经很重了,比 MRI 重得多。仅仅将整个野兽从磁盘加载到 RAM 中就已经比在 MRI 中运行相同的脚本花费更长的时间。我们甚至还没有添加 JVM 的启动时间!

关于ruby - 如何改善 jRuby 加载时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3778472/

相关文章:

java - 当我们写入时创建了多少个对象

java - 在 Java 虚拟机中处理信号

ruby - 未初始化的常量 ActiveRecord (NameError)

ruby - 1.8 与 1.9 中的 BigDecimal

ruby - 学习新 ruby 的最佳方式?

ruby-on-rails - 如何在没有 Rhosync 或 RhoConnect 的情况下使用 Rhodes?

performance - 什么更有效率 : several insert vs single insert with union

java - 增加 JVM 可用的堆空间 : OutOfMemoryError: Requested array size exceed VM limit Ubuntu 64Bit Neo4j 2. 0

MySQL SELECT 效率

c# - 重写结构体的 Equals 方法如何提高 C# 中的性能?