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:
parent
10e994cc07
commit
f80aa59946
1 changed files with 9 additions and 1 deletions
|
@ -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.
|
||||||
|
|
Loading…
Reference in a new issue