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/