Feature #9614
Updated by nobu (Nobuyoshi Nakada) over 10 years ago
Hi matz, I would like your permission to remove the order preservation from any or all of the following currently implemented using `st_table`: st_table: * method tables * global symbols (`Symbol.all_symbols`) (Symbol.all_symbols) * constant tables * instance variable tables * `global_variables` global_variables method * `Thread#keys` Thread#keys * anything besides the `Hash` Hash class I am currently working on a patch series to reduce internal memory usage, so far I have only converted three pieces: 1. 1) method tables (~200K reduction) 2. 2) symbol table (`global_symbols.`{`id_str`,`sym_id`}) (global_symbols.{id_str,sym_id}) (~200K) 3. `frozen_strings` 3) frozen_strings (~100K) n.b. `frozen_strings` frozen_strings ordering is never exposed to users, so I expect it to be OK. Memory reduction is just based on "`ruby "ruby -e exit`" exit" (which loads RubyGems); bigger programs with more methods/symbols will save more memory. Work-in-progress patches attached (0002 describes implementation details)