Actions
Bug #21032
closed`Module#autoload?` is slow when `$LOAD_PATH` contains a relative path
Bug #21032:
`Module#autoload?` is slow when `$LOAD_PATH` contains a relative path
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