Issue #19911 has been updated by k0kubun (Takashi Kokubun).
Status changed from Open to Feedback
You're measuring a lot other things by using the `time` command to benchmark the
script. It's more accurate to measure the time inside a script.
```
$ ruby -v -e 't = Time.new; require "json"; puts "%.3fs" %
(Time.new - t)'
ruby 2.7.7p221 (2022-11-24 revision 168ec2b1e5) [x86_64-linux]
0.003s
$ ruby -v -e 't = Time.new; require "json"; puts "%.3fs" %
(Time.new - t)'
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
0.003s
```
----------------------------------------
Bug #19911: require slower with ruby/3.2.2
https://bugs.ruby-lang.org/issues/19911#change-104826
* Author: ashwinsurya14 (Ashwin Surya Kumar Sivasubramanian)
* Status: Feedback
* Priority: Normal
* ruby -v: ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
* Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
we tested require with ruby 3.2.2 and ruby 2.7.2
and its seems to slowdown considerabily
the test case:
Ruby 3.2.2
command: time ruby -e 'require "json"'
time: user=0.19s system=0.02s cpu=99% total=0.204
Ruby 2.7.2
command: time ruby -e 'require "json"'
time: user=0.05s system=0.02s cpu=98% total=0.064
We also saw the same slowdown with File.read
Not sure that is casuing the slowdown in require also
On side note we saw three times more lstat on strace with the above command on
ruby/3.2.2.Not sure if that is the root cause
I also tested with multiple versions of ruby 2* starting with ruby/2.3.1 and it doesnt
seem to have this slowdown
--
https://bugs.ruby-lang.org/