From: Benoit Daloze Date: 2011-10-12T03:51:34+09:00 Subject: [ruby-core:40109] [Ruby 1.9 - Feature #5427] Not complex patch to improve `require` time (load.c) Issue #5427 has been updated by Benoit Daloze. On 11 October 2011 04:42, Urabe Shyouhei wrote: > On 10/10/2011 07:51 PM, Yura Sokolov wrote: >> Anyway, is idea looks good? > > The approach is interesting. Do you have any benchmarks for how fast is it? I was also curious how it performed so I made a benchmark. Please have a look at https://gist.github.com/1278881 ---------------------------------------- Feature #5427: Not complex patch to improve `require` time (load.c) http://redmine.ruby-lang.org/issues/5427 Author: Yura Sokolov Status: Open Priority: Normal Assignee: Category: Target version: Currently `loaded_features` are unsorted, so that `rb_feature_p` ought to iterate over all `loaded_features` to figure: is requested feature loaded? After this patch `loaded_features` is kept sorted by basename without extension (/usr/lib/ruby/asdf.rb => asdf). When `rb_feature_p` start its check, it goes straight to the first item with matching basename (using binary search) and stops after last. Methods `$LOADED_FEATURES.<<` and `$LOADED_FEATURES.push` are overriden to keep sort order. `push` accepts only 1 parameter, but it seems that no one pass more to it. Currently I choose to consider characters of basename in right to left order, but it could be changed, I think. https://gist.github.com/1272991 https://github.com/ruby/ruby/pull/51 -- http://redmine.ruby-lang.org