
Issue #21164 has been updated by purbug28 (puni ru). ```ruby # frozen_string_literal: true require 'benchmark' n = 200000 time = Benchmark.realtime do c = Array.new(n + 1, 0) (1..n).each do |i| a = [] m = 100 (1..m).each do a << i c[i] += 1 a << i / m c[i % m] += 1 end end end puts time ``` I can see the same slowdown with `--disable-gems` and Benchmark.realtime. ```
ruby -v --disable-gems --jit array.rb ruby 3.3.7 (2025-01-15 revision be31f993d7) +YJIT [x86_64-linux] 1.1835691558662802 ruby -v --disable-gems --jit array.rb ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +YJIT +PRISM [x86_64-linux] 1.9472596580162644
----------------------------------------
Bug #21164: Performance Regression using --jit
https://bugs.ruby-lang.org/issues/21164#change-112150
* Author: purbug28 (puni ru)
* Status: Feedback
* ruby -v: ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-linux]
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
Ruby 3.4.2 --jit runs slower than no JIT, while Ruby 3.3.7 --jit runs faster.
```ruby
# frozen_string_literal: true
n = 200000
c = Array.new(n + 1, 0)
(1..n).each do |i|
a = []
m = 100
(1..m).each do
a << i
c[i] += 1
a << i / m
c[i % m] += 1
end
end
puts c.sum
results of /usr/bin/time ruby 3.4.2 --jit : 1.98user 0.03system 0:02.02elapsed 99%CPU (0avgtext+0avgdata 19692maxresident)k no JIT: 1.77user 0.02system 0:01.80elapsed 99%CPU (0avgtext+0avgdata 18916maxresident)k ruby 3.3.7 --jit : 1.20user 0.05system 0:01.26elapsed 99%CPU (0avgtext+0avgdata 23220maxresident)k no JIT: 1.81user 0.02system 0:01.83elapsed 99%CPU (0avgtext+0avgdata 22952maxresident)k `ruby -v --jit` ``` ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +YJIT +PRISM [x86_64-linux] ``` -- https://bugs.ruby-lang.org/