Feature #15151
Updated by chopraanmol1 (Anmol Chopra) about 6 years ago
String#slice! when used at beginning of string (e.g. slice!(0,10)) slice!(0,10) calls rb_str_drop_bytes which creates shared string for non embed string. str_modify_keep_cr clears the flag of shared string which is called before rb_str_drop_bytes. Due to which while calling slice! multiple time on same string creates multiple duplicate string. Patch: https://github.com/ruby/ruby/pull/1961 Comparison: trunk: ~~~ Total allocated: 141116188 bytes (11250 objects) 0.048000 0.000000 0.048000 ( 0.045974) ~~~ patch: ~~~ Total allocated: 300080 bytes (7502 objects) 0.016000 0.004000 0.020000 ( 0.017376) ~~~