Actions
Bug #11901
closedPerformance Issue with OpenStruct
Description
After recent changes to define OpenStruct getter/setter methods lazily, there is a heavy performance impact for the use case where an attribute is assigned at initialization time (i.e. Openstruct.new(foo: :bar)
). Once an attribute is stored in the internal hash, the appropriate singleton methods will never be defined, due to the recent changes to OpenStruct's #respond_to_missing?
- meaning that every time I call #foo
or #foo=
it relies on #method_missing
. Benchmark using benchmark-ips is attached.
I'm primarily concerned about the case of configuration objects, which may be populated at initialization time and then accessed many times throughout the life of the program.
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0