Project

General

Profile

Actions

Feature #15151

open

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

Added by chopraanmol1 (Anmol Chopra) over 5 years ago. Updated over 4 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 #1

Updated by chopraanmol1 (Anmol Chopra) over 5 years ago

  • Description updated (diff)
Actions #2

Updated by chopraanmol1 (Anmol Chopra) over 5 years ago

  • Description updated (diff)
Actions #3

Updated by chopraanmol1 (Anmol Chopra) over 5 years ago

Updated by chopraanmol1 (Anmol Chopra) over 5 years ago

@nobu (Nobuyoshi Nakada) can you look into this? Thank you.

Actions #6

Updated by jeremyevans0 (Jeremy Evans) over 4 years ago

  • Tracker changed from Bug to Feature
  • ruby -v deleted (ruby 2.6.0dev (2018-09-23 trunk 64815) [x86_64-linux])
  • Backport deleted (2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN)
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0