缓慢的基本操作JRuby rake任务

时间:2017-02-23 03:06:01

标签: ruby-on-rails performance rake jruby

我正在尝试使用JRuby和Rails来解决性能问题而没有太多运气。

基本上,我有一个JRuby on Rails 5应用程序,它将启动rake任务中的进程。在测试一些rake任务时,我们注意到与我们使用的旧脚本相比显着减速,这些脚本是用MRI ruby​​编写的,并使用bundle exec ruby <script>调用运行。

rake任务上下文中对字符串,数组,数字等的基本操作慢5-6倍。例如,采取这个简单的测试:

bin/rake performance_test:start

其中performance_test.rake是:

namespace :performance_test do
  desc 'Test Performance'
  task :start do
    Benchmark.bmbm do |x|
      x.report ('double') do
        100_000_000.times do
          "Hello world!"
        end
      end
    end
  end
end

产生这些结果:

Rehearsal ------------------------------------------
double  27.570000   0.630000  28.200000 ( 27.714908)
-------------------------------- total: 28.200000sec

             user     system      total        real
double  28.050000   0.750000  28.800000 ( 29.864897)

运行时:

jruby -G performance_test.rb

其中performance_test.rb是:

require 'require_all'
require 'bundler'
Bundler.require(:default)
require_all Dir.glob('lib/extensions/*.rb')

Benchmark.bmbm do |x|
  x.report ('double') do
    100_000_000.times do
      "Hello world!"
    end
  end
end

给了我这些结果:

Rehearsal ------------------------------------------
double   4.930000   0.240000   5.170000 (  5.639570)
--------------------------------- total: 5.170000sec

             user     system      total        real
double   4.420000   0.180000   4.600000 (  5.538717)

我已经尝试了几乎所有可用的JVM和JRuby选项,并且没有任何运气就搜索了这方面的信息。如果我能找到解决这个问题的根本原因以及如何解决这个问题,那将会很棒。

0 个答案:

没有答案