Permalink
Browse files

Use &= instead of select with include?

The performance is almost the same with both implementations but this is
clear.

Before this patch:

Calculating -------------------------------------
  small erb template      1452 i/100ms
-------------------------------------------------
  small erb template    17462.1 (±13.3%) i/s -      85668 in   5.031395s
.Calculating -------------------------------------
small erb template with 1 partial
                           887 i/100ms
-------------------------------------------------
small erb template with 1 partial
                         8899.6 (±18.8%) i/s -      42576 in   5.009453s
.Calculating -------------------------------------
small erb template with 2 partials
                           666 i/100ms
-------------------------------------------------
small erb template with 2 partials
                         6821.5 (±8.8%) i/s -      33966 in   5.020791s

After the patch:

Calculating -------------------------------------
  small erb template      1479 i/100ms
-------------------------------------------------
  small erb template    15956.6 (±7.6%) i/s -      79866 in   5.036001s
.Calculating -------------------------------------
small erb template with 1 partial
                           841 i/100ms
-------------------------------------------------
small erb template with 1 partial
                         9242.2 (±6.9%) i/s -      46255 in   5.029497s
.Calculating -------------------------------------
small erb template with 2 partials
                           615 i/100ms
-------------------------------------------------
small erb template with 2 partials
                         6524.7 (±6.8%) i/s -      32595 in   5.020456s

You can find the benchmark code at
https://gist.github.com/rafaelfranca/dee31120cfdb1ddc3b56
  • Loading branch information...
rafaelfranca committed Jul 16, 2014
1 parent b5fbcc5 commit 9bbb3ca3066fc5dbaeddad97d995dbe435d0a031
Showing with 1 addition and 4 deletions.
  1. +1 −4 actionview/lib/action_view/lookup_context.rb
@@ -66,10 +66,7 @@ class DetailsKey #:nodoc:
def self.get(details)
if details[:formats]
details = details.dup
syms = Mime::SET.symbols
details[:formats] = details[:formats].select { |v|
syms.include? v
}
details[:formats] &= Mime::SET.symbols
end
@details_keys[details] ||= new
end

0 comments on commit 9bbb3ca

Please sign in to comment.