diff options
author | Andrew White <andyw@pixeltrix.co.uk> | 2014-01-05 00:24:57 +0000 |
---|---|---|
committer | Andrew White <andyw@pixeltrix.co.uk> | 2014-01-05 00:36:25 +0000 |
commit | d017e92e1d825c6bf9fa49c339c55ca920effe45 (patch) | |
tree | 1be932f13414cd91fe8365b3f4d2d1d05362965b /activerecord/examples | |
parent | 339ce7fe9d09c088cfc44e78d91b0a5dd220f9f1 (diff) | |
download | rails-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