From: "funny_falcon (Yura Sokolov)" Date: 2012-07-02T03:56:29+09:00 Subject: [ruby-core:46086] [ruby-trunk - Feature #5653] "I strongly discourage the use of autoload in any standard libraries" (Re: autoload will be dead) Issue #5653 has been updated by funny_falcon (Yura Sokolov). rosenfeld (Rodrigo Rosenfeld Rosas) wrote: > sorry, but I didn't get it. It is pretty easy to demonstrate the difference in performance between using autoload and require. > > Just change "config.cache_classes = false" to "true" in config/environments/development.rb. > > Then, `time rails r 'p 1'`. For a fresh Rails application here: > > with cache_classes set to false: 1.5s > with cache_classes set to true: 1.9s > > In my actual app it goes from 4.5s to 6.3s. Considering start-up time: many people uses patch #5767 ( https://github.com/ruby/ruby/pull/68 ) to speedup startup time. (Currently, it is part of `falcon.patch` in rvm. It could be easily installed with `rvm reinstall 1.9.3-falcon --patch falcon`) With this patch difference becomes much lesser. `time rails r 'p 1'` for fresh rails app: with cache_classes set to false: 1.43s with cache_classes set to true: 1.58s ---------------------------------------- Feature #5653: "I strongly discourage the use of autoload in any standard libraries" (Re: autoload will be dead) https://bugs.ruby-lang.org/issues/5653#change-27693 Author: matz (Yukihiro Matsumoto) Status: Assigned Priority: Normal Assignee: nahi (Hiroshi Nakamura) Category: lib Target version: 2.0.0 Hi, Today, I talked with NaHi about enhancing const_missing to enable autoload-like feature with nested modules. But autoload itself has fundamental flaw under multi-thread environment. I should have remove autoload when I added threads to the language (threads came a few months after autoload). So I hereby declare the future deprecation of autoload. Ruby will keep autoload for a while, since 2.0 should keep compatibility to 1.9. But you don't expect it will survive further future, e.g. 3.0. I strongly discourage the use of autoload in any standard libraries. matz. -- http://bugs.ruby-lang.org/