の追試です。 複数のRuby実装で速さの違いを比べてみます。
スクリプト
require 'benchmark' def tak(x, y, z) if x > y then tak(tak(x-1, y, z), tak(y-1, z, x), tak(z-1, x, y)) else y end end Benchmark.bm do |x| x.report do tak(14, 7, 0) end end
Ruby 3.1.2preview2
ledsun@MSI:~/tarai►ruby -v tarai.rb ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] user system total real 15.766919 0.000000 15.766919 ( 15.767049)
Ruby 3.1.2preview2 with YJIT
ledsun@MSI:~/tarai►ruby -v --jit tarai.rb ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) +YJIT [x86_64-linux] user system total real 3.669399 0.000000 3.669399 ( 3.669449)
Ruby 3.1.2preview2 with MJIT
ledsun@MSI:~/tarai►ruby -v --mjit tarai.rb ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) +MJIT [x86_64-linux] user system total real 5.770545 0.011228 6.710264 ( 5.778556)
Ruy 3.1.2
ledsun@MSI:~/tarai►ruby -v tarai.rb ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] user system total real 14.975424 0.000000 14.975424 ( 14.975669)
Ruby 3.1.2 with YJIT
ledsun@MSI:~/tarai►ruby -v --jit tarai.rb ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) +YJIT [x86_64-linux] user system total real 4.376260 0.000542 4.376802 ( 4.376845)
Ruby 3.1.2 with MJIT
ledsun@MSI:~/tarai►ruby -v --mjit tarai.rb ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) +MJIT [x86_64-linux] user system total real 6.358203 0.000000 7.104936 ( 6.356328)
jRuby
ledsun@MSI:~/tarai►ruby -v tarai.rb 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 6.980000 0.000000 6.980000 ( 6.335983)
TruffleRuby
ledsun@MSI:~/tarai►ruby -v tarai.rb truffleruby 22.2.0, like ruby 3.0.3, GraalVM CE Native [x86_64-linux] user system total real 5.272819 0.284125 5.556944 ( 4.726222)