Project

General

Profile

Actions

Feature #15151

open

String#slice!(0,..) creates a duplicate of original string

Added by chopraanmol1 (Anmol Chopra) about 6 years ago. Updated over 5 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:89137]

Description

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) bench_slice_bang.rb chopraanmol1 (Anmol Chopra), 09/23/2018 03:32 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0