Created
June 4, 2010 22:07
-
-
Save wycats/426004 to your computer and use it in GitHub Desktop.
Revisions
-
wycats created this gist
Jun 4, 2010 .There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,90 @@ fast: through middleware inserted at 0 slwr: through middleware inserted via @use@ rotr: through endpoint sent via the router bare: through ActionController::Metal with self.response_body cntr: through ActionController::Base with self.response_body text: through ActionController::Base with render :text tmpl: through ActionController::Base with simple render :template layt: through ActionController::Base with render :template with layout Note: These tests are being run without ActiveRecord, which currently has an extremely slow connection pool implementation. It might be impossible to improve this implementation, but straight framework benchmarks should compare reasonably with frameworks without ORM support Before any work (with ActiveRecord): real rps fast 0.004780 2900 slwr 0.358510 1300 rotr 0.351757 1200 bare 0.476070 1105 cntr 0.745560 695 text 0.978853 570 tmpl 1.110000 539 layt 2.080000 340 Before any work (without ActiveRecord): * The rest of the optimization work is done without AR real rps fast 0.004488 2900 slwr 0.282390 1450 rotr 0.301546 1380 bare 0.367800 1281 cntr 0.639768 800 text 0.860590 650 tmpl 0.973746 610 layt 1.900397 360 After first round: * Memoize commonly used request methods * Use faster run_callbacks method * Eliminate the need to check superclass for callbacks changes each time * Improve log subscriber by remembering list of loggers * Small improvement to performance of MessageVerifier * Use simple Request methods in Logger middleware because the more advanced versions aren't available yet but are slower anyway * Stop the flash middleware from pulling in the session even if it's never used real rps fast 0.004857 2900 slwr 0.067485 2150 rotr 0.087929 2000 bare 0.154795 1720 cntr 0.462846 950 text 0.675570 800 tmpl 0.742683 725 layt 1.855277 375 Second round: * Eliminate redundant unescaping * Slightly improve performance of #unescape real rps fast 0.004365 2900 slwr 0.068906 2200 rotr 0.088535 2000 bare 0.118635 1800 cntr 0.377927 1035 text 0.622412 820 tmpl 0.690456 740 layt 1.799501 375 Third round: * Improve LookupContext, more to come * Avoid constantly going through the whole PathSet coercion logic * Add AS::Dependencies.ref, which returns an object you can call #get on to get the real object real rps fast 0.004271 2900 slwr 0.067029 2200 rotr 0.088085 2000 bare 0.103868 1900 cntr 0.355898 1070 text 0.557127 825 tmpl 0.639581 765 layt 1.678789 375