JITが効くまでに時間が掛かるのではないか? - @ledsun blog でTruffleRubyを計測したスクリプトがあります。 そのまま流用してjRubyも計測してみます。
スクリプト
require "bigdecimal" require "benchmark" def pi prec = 100 conv = 3 a = BigDecimal("1") b = BigDecimal("1") / BigDecimal("2").sqrt(prec) t = BigDecimal("1") / 4 p = BigDecimal("1") for n in 1..conv do an = (a + b) / 2 b = (a * b).sqrt(prec) t -= p * (an - a) * (an - a) p *= 2 a = an end end Benchmark.bm do |x| x.report do ARGV[0].to_i.times do pi end end end
rbenv local 3.1.2 ruby --version ruby pi.rb $1 rbenv local jruby-9.3.7.0 ruby --version ruby pi.rb $1
結果
ledsun@MSI:~/ruby-pi►./run_jruby.sh 1 ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] user system total real 0.004461 0.000000 0.004461 ( 0.004499) jruby 9.3.7.0 (2.6.8) 2022-08-16 c79ef237e0 OpenJDK 64-Bit Server VM 11.0.16+8-post-Ubuntu-0ubuntu120.04 on 11.0.16+8-post-Ubuntu-0ubuntu120.04 +jit [x86_64-linux] user system total real 4.010000 0.060000 4.070000 ( 1.737954) ledsun@MSI:~/ruby-pi►./run_jruby.sh 10 ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] user system total real 0.040831 0.000000 0.040831 ( 0.040857) jruby 9.3.7.0 (2.6.8) 2022-08-16 c79ef237e0 OpenJDK 64-Bit Server VM 11.0.16+8-post-Ubuntu-0ubuntu120.04 on 11.0.16+8-post-Ubuntu-0ubuntu120.04 +jit [x86_64-linux] user system total real 15.600000 0.190000 15.790000 ( 12.541831) ledsun@MSI:~/ruby-pi►./run_jruby.sh 100 ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] user system total real 0.397269 0.000000 0.397269 ( 0.397289) jruby 9.3.7.0 (2.6.8) 2022-08-16 c79ef237e0 OpenJDK 64-Bit Server VM 11.0.16+8-post-Ubuntu-0ubuntu120.04 on 11.0.16+8-post-Ubuntu-0ubuntu120.04 +jit [x86_64-linux] user system total real 133.670000 0.830000 134.500000 (122.400172) ledsun@MSI:~/ruby-pi►./run_jruby.sh 1000 ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] user system total real 4.024466 0.000000 4.024466 ( 4.024575) jruby 9.3.7.0 (2.6.8) 2022-08-16 c79ef237e0 OpenJDK 64-Bit Server VM 11.0.16+8-post-Ubuntu-0ubuntu120.04 on 11.0.16+8-post-Ubuntu-0ubuntu120.04 +jit [x86_64-linux] user system total real 1288.650000 6.590000 1295.240000 (1193.121318)
実行時間は線形に増えます。 ごく普通です。