我試圖用JRuby和Rails診斷性能問題,但沒有多少運氣。基本上,我有一個JRuby on Rails 5應用程序,它將啓動rake任務中的進程。在測試一些rake任務時,我們注意到與我們使用的寫在MRI ruby中的舊腳本相比顯着下降,並使用bundle exec ruby <script>
調用運行。慢速基本操作JRuby rake任務
在rake任務上下文中對字符串,數組,數字等的基本操作速度要慢5-6倍。在運行此
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
例如採取這個簡單的測試:
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
產生這些結果其中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選項可用,並尋找沒有任何的運氣這個信息。如果我能找到這個問題的根本原因以及我將如何解決問題,那將是非常好的。
嘿查爾斯!非常感謝花時間看這個。我使用JRuby 9.1.7.0運行,結果絕對符合我的預期。 PS我會提交作爲一個錯誤,但它似乎沒有正確的地方:) –