[Bug #21032] $LOAD_PATH に相対パスが含まれていると Module#autoload? が遅くなるというバグ報告

2025/01/27に公開

[Bug #21032] Module#autoload? is slow when $LOAD_PATH contains a relative path

  • $LOAD_PATH に相対パスが含まれている場合に Module#autoload? が遅くなるというバグ報告
  • 手元だと次のようなコードを実行した時に相対パスが含まれていると10倍近く遅くなりますね…
require 'benchmark'

$LOAD_PATH << 'relative-path'

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

puts Benchmark.realtime {
  500_000.times do
    Object.autoload?(:FOO)
  end
}
  • これが Zeitwerk にまで影響を及ぼしているみたいですね
  • この不具合は開発版の Ruby 3.5-dev で修正済みです
GitHubで編集を提案

Discussion