1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Decrease string allocations on AR#respond_to?

When a symbol is passed in, we call `to_s` on it which allocates a string. The two hardcoded symbols that are used internally are `:to_partial_path` and `:to_model`.

This change buys us 71,136 bytes of memory and 1,777 fewer objects per request.
This commit is contained in:
schneems 2015-07-24 00:46:12 -05:00
parent 10e994cc07
commit f80aa59946

View file

@ -230,7 +230,15 @@ module ActiveRecord
# person.respond_to(:nothing) # => false # person.respond_to(:nothing) # => false
def respond_to?(name, include_private = false) def respond_to?(name, include_private = false)
return false unless super return false unless super
name = name.to_s
case name
when :to_partial_path
name = "to_partial_path".freeze
when :to_model
name = "to_model".freeze
else
name = name.to_s
end
# If the result is true then check for the select case. # If the result is true then check for the select case.
# For queries selecting a subset of columns, return false for unselected columns. # For queries selecting a subset of columns, return false for unselected columns.