diff options
author | Ben Hughes <ben@pixelmachine.org> | 2016-12-28 11:35:43 -0800 |
---|---|---|
committer | Ben Hughes <ben@pixelmachine.org> | 2016-12-28 17:19:15 -0800 |
commit | f1525dac115cea40ec41b4f9e267e011be8da22e (patch) | |
tree | 3e2fb4694230c63bc5cbbbb9ead82c25e1466249 /actionpack/test/journey | |
parent | 47cda2e1f655d38a204c4df88d780500c1e99316 (diff) | |
download | rails-f1525dac115cea40ec41b4f9e267e011be8da22e.tar.gz rails-f1525dac115cea40ec41b4f9e267e011be8da22e.tar.bz2 rails-f1525dac115cea40ec41b4f9e267e011be8da22e.zip |
Optimize Journey::Route#score
Scoring routes based on constraints repeated many type conversions that
could be performed in the outer loop. Determinations of score and
fitness also used Array operations that required allocations. Against
my benchmark with a large routeset, this reduced object allocations by
over 30x and wall time by over 3x.
Diffstat (limited to 'actionpack/test/journey')
-rw-r--r-- | actionpack/test/journey/route_test.rb | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/actionpack/test/journey/route_test.rb b/actionpack/test/journey/route_test.rb index d2a8163ffb..8fd73970b8 100644 --- a/actionpack/test/journey/route_test.rb +++ b/actionpack/test/journey/route_test.rb @@ -96,7 +96,7 @@ module ActionDispatch path = Path::Pattern.from_string "/:controller(/:action(/:id))(.:format)" generic = Route.build "name", nil, path, constraints, [], {} - knowledge = { id: 20, controller: "pages", action: "show" } + knowledge = { "id" => true, "controller" => true, "action" => true } routes = [specific, generic] |