1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/actionpack/lib/action_dispatch
Andrew White d017e92e1d Use a custom route vistor for optimized route generation
Using a Regexp to replace dynamic segments in a path string is fraught
with difficulty and can lead to odd edge cases like #13349. Since we
already have a parsed representation of the path it makes sense to use
that to generate an array of segments that can be used to build an
optimized route's path quickly.

Tests on a simple route (e.g. /posts/:id) show a speedup of 35%:
https://gist.github.com/pixeltrix/8261932

Calculating -------------------------------------
    Current Helper:       5274 i/100ms
    New Helper:           8050 i/100ms
-------------------------------------------------
    Current Helper:     79263.6 (±3.7%) i/s -     395550 in   4.997252s
    New Helper:        153464.5 (±4.9%) i/s -     772800 in   5.047834s

Tests on a more complex route show even an greater performance boost:
https://gist.github.com/pixeltrix/8261957

Calculating -------------------------------------
    Current Helper:       2367 i/100ms
    New Helper:           5382 i/100ms
-------------------------------------------------
    Current Helper:     29506.0 (±3.2%) i/s -     149121 in   5.059294s
    New Helper:         78815.5 (±4.1%) i/s -     398268 in   5.062161s

It also has the added benefit of fixing the edge cases described above.

Fixes #13349
2014-01-05 00:36:25 +00:00
..
http Move the null mime type to request.format 2013-12-23 16:16:49 -02:00
journey Use a custom route vistor for optimized route generation 2014-01-05 00:36:25 +00:00
middleware Fix Encoding::CompatibilityError when public path is UTF-8 2013-12-29 18:38:53 +00:00
request Merge pull request #13188 from imanel/skip_deep_munge 2013-12-19 23:39:17 -07:00
routing Use a custom route vistor for optimized route generation 2014-01-05 00:36:25 +00:00
testing Merge branch 'master' of github.com:lifo/docrails 2013-12-20 00:10:30 +05:30
journey.rb
railtie.rb Add configuration option to optionally disable deep_munge 2013-12-05 12:08:34 +01:00
routing.rb Dry-up ActionDispatch::Routing autoloads 2013-06-04 12:12:52 +03:00