Project

General

Profile

Actions

Bug #21032

open

`Module#autoload?` is slow when `$LOAD_PATH` contains a relative path

Added by byroot (Jean Boussier) 3 days ago. Updated 2 days ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:120637]

Description

Reproduction script:

require 'benchmark'

$LOAD_PATH << 'relative-path'

autoload :FOO, '/tmp/foo.rb'

puts Benchmark.realtime {
  500_000.times do
    Object.autoload?(:FOO)
  end
}

The above takes 2.5 to 3 seconds on my machine, but just removing $LOAD_PATH << 'relative-path' make it complete in 50ms.
It's such a stark difference that I think it is a bug, and it cause Zeitwerk, a very popular gem, to be way slower than it should
when the load path contains relative paths.

I have a patch for it, that passes all tests, but I'd appreciate some eyes on it: https://github.com/ruby/ruby/pull/12562

cc @fxn

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0