From: Eric Wong Date: 2015-05-29T00:53:04+00:00 Subject: [ruby-core:69405] Re: [Ruby trunk - Feature #11170] [Open] [PATCH] use ivar indices for generic ivars After the original patch, rb_generic_ivar_table() is much more expensive but kept for compatibility reasons. I propose deprecating it, I'm not sure if any 3rd party C-exts use it. http://80x24.org/spew/m/1432859944-14374-1-git-send-email-e@80x24.org.txt [PATCH 3/2] avoid compatibility table with generic ivars This recovers and improves performance of Marshal.dump/load on Time objects compared to when we implemented generic ivars entirely using st_table. This also recovers some performance on other generic ivar objects, but does not bring bring Marshal.dump/load performance up to previous speeds. benchmark results: minimum results in each 10 measurements. Execution time (sec) name trunk geniv after marshal_dump_flo 0.343 0.334 0.335 marshal_dump_load_geniv 0.487 0.527 0.495 marshal_dump_load_time 1.262 1.401 1.257 Speedup ratio: compare with the result of `trunk' (greater is better) name geniv after marshal_dump_flo 1.026 1.023 marshal_dump_load_geniv 0.925 0.985 marshal_dump_load_time 0.901 1.004