Permalink
Browse files

Perf: micro optimised Result column hash_row creation

  • Loading branch information...
1 parent fb32101 commit ba0568e46d890d57cfef2ea86745bdeb879fefa7 @SamSaffron SamSaffron committed Aug 29, 2013
Showing with 15 additions and 1 deletion.
  1. +15 −1 activerecord/lib/active_record/result.rb
@@ -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

0 comments on commit ba0568e

Please sign in to comment.