Created
December 6, 2011 11:54
-
-
Save josevalim/1437939 to your computer and use it in GitHub Desktop.
Potentially faster boot
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# THANKS EVERYONE FOR YOUR BELOVED BENCHMARKS. | |
# THIS PATCH IS NOW IN RAILS: | |
# | |
# https://github.com/rails/rails/commit/885a599303585b796da7a0a1c3ccd0bc5c642134 | |
# Please add the following lines after Bundler.require | |
# and before "class Application < Rails::Application" | |
# in your config/application.rb | |
# | |
# Notice this is just an experiment, don't leave those | |
# lines there after the experiment. Then please benchmark | |
# your app boot time in development before and after adding | |
# those lines. A simple benchmark is: | |
# | |
# time script/rails runner "MODEL" | |
# | |
# Where MODEL is a model available in your app. Also, | |
# please run the command above at least three times to | |
# ensure we don't have fake samples. :) | |
# | |
# Please post the results in the comments below of the | |
# benchmarks before and after adding the code. <3 | |
# | |
# This patch should work on Rails 3.0, 3.1 and master. | |
# | |
# Extra: if you could run your app in development and | |
# production (in your machine!!) with this patch on | |
# for a couple minutes and report any errors, you will | |
# win extra <3 <3 <3. | |
require "active_support/dependencies" | |
ActiveSupport::Dependencies::WatchStack.class_eval do | |
def watching? | |
[email protected]? | |
end | |
end | |
def load_dependency(file) | |
if ActiveSupport::Dependencies.load? && ActiveSupport::Dependencies.constant_watch_stack.watching? | |
ActiveSupport::Dependencies.new_constants_in(Object) { yield } | |
else | |
yield | |
end | |
rescue Exception => exception # errors from loading file | |
exception.blame_file! file | |
raise | |
end |
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.0.0]
Rails 3.0.9
Before:
13,37s user 1,03s system 100% cpu 14,397 total
13,42s user 1,05s system 99% cpu 14,468 total
13,48s user 1,06s system 100% cpu 14,534 total
After:
13,21s user 1,07s system 99% cpu 14,394 total
13,37s user 1,06s system 99% cpu 14,433 total
13,34s user 1,06s system 100% cpu 14,391 total
No actual improvement noticed...
Rails 3.0.10
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.1.0]
Before:
real 0m38.392s
user 0m35.857s
sys 0m2.511s
After:
real 0m36.849s
user 0m34.325s
sys 0m2.443s
Same app with ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.1.0]
Before:
real 0m17.713s
user 0m14.797s
sys 0m1.444s
After:
real 0m15.556s
user 0m14.086s
sys 0m1.400s
Thanks everyone for your beloved benchmarks. This patch is now in Rails:
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Sorry... ignore the error i reported... accidentally deleted the Bundler.require... doh