Feature #9143
closedOptimize CSV to share hash key objects between rows
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
Updated by avit (Andrew Vit) about 11 years ago
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.
Updated by nobu (Nobuyoshi Nakada) about 11 years ago
=begin
You can use (({assert_instance_of})) and (({assert_same})).
=end
Updated by avit (Andrew Vit) about 11 years ago
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.
Updated by nobu (Nobuyoshi Nakada) about 11 years ago
assert_predicate(string_key, :frozen?) will show better message when it fails.
Updated by nobu (Nobuyoshi Nakada) about 11 years ago
- Status changed from Open to Assigned
- Assignee set to JEG2 (James Gray)
Updated by JEG2 (James Gray) about 11 years ago
- Status changed from Assigned to Closed
- % Done changed from 50 to 100