From: "k0kubun (Takashi Kokubun) via ruby-core" Date: 2025-02-14T05:09:52+00:00 Subject: [ruby-core:121023] [Ruby master Bug#21032] `Module#autoload?` is slow when `$LOAD_PATH` contains a relative path Issue #21032 has been updated by k0kubun (Takashi Kokubun). Backport changed from 3.1: WONTFIX, 3.2: REQUIRED, 3.3: REQUIRED, 3.4: REQUIRED to 3.1: WONTFIX, 3.2: REQUIRED, 3.3: REQUIRED, 3.4: DONE ruby_3_4 commit:ead3bbc2405ad1df2228c44133ee1c6574ef5973 merged revision(s) commit:d4a1a2780c39bc648496ac92fc6e6ce2eb38ab47. ---------------------------------------- Bug #21032: `Module#autoload?` is slow when `$LOAD_PATH` contains a relative path https://bugs.ruby-lang.org/issues/21032#change-111931 * Author: byroot (Jean Boussier) * Status: Closed * Backport: 3.1: WONTFIX, 3.2: REQUIRED, 3.3: REQUIRED, 3.4: DONE ---------------------------------------- Reproduction script: ```ruby 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 -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/