Feature #9143
closed
Optimize CSV to share hash key objects between rows
Added by avit (Andrew Vit) about 11 years ago.
Updated about 11 years ago.
Description
Currently, when CSV headers are strings, then each row receives a copy of the strings for hash keys. This patch is an optimization to share the same frozen string keys between all rows.
Please verify: in the implementation of Hash::[]
, are strings the only object that is dup'd, or should other types be frozen so they aren't copied for each row too?
Files
Note, this can be worked around by doing csv.header_converters << proc{|h| h.freeze }
but I think there should be some built-in optimization for this.
=begin
You can use (({assert_instance_of})) and (({assert_same})).
=end
Thanks nobu, I write too much RSpec lately.
Updated patch attached: I also added freeze in Row#initialize, not sure if both places are needed, or which is better. Please review.
assert_predicate(string_key, :frozen?) will show better message when it fails.
- Status changed from Open to Assigned
- Assignee set to JEG2 (James Gray)
- Status changed from Assigned to Closed
- % Done changed from 50 to 100
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0