Project

General

Profile

Actions

Bug #19911

closed

require slower with ruby/3.2.2

Added by ashwinsurya14 (Ashwin Surya Kumar Sivasubramanian) 8 months ago. Updated 8 months ago.

Status:
Feedback
Assignee:
-
Target version:
-
ruby -v:
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
[ruby-core:114950]

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
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0