aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/examples
diff options
context:
space:
mode:
authorAndrew White <andyw@pixeltrix.co.uk>2014-01-05 00:24:57 +0000
committerAndrew White <andyw@pixeltrix.co.uk>2014-01-05 00:36:25 +0000
commitd017e92e1d825c6bf9fa49c339c55ca920effe45 (patch)
tree1be932f13414cd91fe8365b3f4d2d1d05362965b /activerecord/examples
parent339ce7fe9d09c088cfc44e78d91b0a5dd220f9f1 (diff)
downloadrails-d017e92e1d825c6bf9fa49c339c55ca920effe45.tar.gz
rails-d017e92e1d825c6bf9fa49c339c55ca920effe45.tar.bz2
rails-d017e92e1d825c6bf9fa49c339c55ca920effe45.zip
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
Diffstat (limited to 'activerecord/examples')
0 files changed, 0 insertions, 0 deletions