From: chopraanmol1@... Date: 2018-11-20T05:14:09+00:00 Subject: [ruby-core:89895] [Ruby trunk Bug#15151] String#slice!(0, ..) creates a duplicate of original string Issue #15151 has been updated by chopraanmol1 (Anmol Chopra). ping @nobu ---------------------------------------- Bug #15151: String#slice!(0,..) creates a duplicate of original string https://bugs.ruby-lang.org/issues/15151#change-74972 * Author: chopraanmol1 (Anmol Chopra) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.6.0dev (2018-09-23 trunk 64815) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- String#slice! when used at beginning of string (e.g. slice!(0,10)) calls rb_str_drop_bytes which creates shared string for non embedded 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) ~~~ ---Files-------------------------------- bench_slice_bang.rb (412 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: