Bug #19911
closedrequire slower with ruby/3.2.2
Description
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
Updated by ashwinsurya14 (Ashwin Surya Kumar Sivasubramanian) 8 months ago
Also i have seen this happeneing in other versions/systems one other thing i tested was with ubuntu.
Updated by ashwinsurya14 (Ashwin Surya Kumar Sivasubramanian) 8 months ago
On further debugging we found that the following is speeding up the require and file read operation
time ruby --disable-gems -e 'require "json"' 05:13:22 PM
user=0.04s system=0.01s cpu=99% total=0.051
Updated by k0kubun (Takashi Kokubun) 8 months ago
- Status changed from Open to Feedback
You're measuring a lot of 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