Skip to content

Commit

Permalink
Perf: micro optimised Result column hash_row creation
Browse files Browse the repository at this point in the history
  • Loading branch information
SamSaffron committed Aug 29, 2013
1 parent fb32101 commit ba0568e
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion activerecord/lib/active_record/result.rb
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,21 @@ def hash_rows
# used as keys in ActiveRecord::Base's @attributes hash
columns = @columns.map { |c| c.dup.freeze }
@rows.map { |row|
Hash[columns.zip(row)]
# In the past we used Hash[columns.zip(row)]
# though elegant, the verbose way is much more efficient
# both time and memory wise cause it avoids a big array allocation
# this method is called a lot and needs to be micro optimised
hash = {}

index = 0
length = columns.length

while index < length
hash[columns[index]] = row[index]
index += 1
end

hash
}
end
end
Expand Down

0 comments on commit ba0568e

Please sign in to comment.