💨

[Misc #20652] String#gsub でメモリが増加する報告

2024/08/15に公開

[Misc #20652] Memory allocation for gsub has increased from Ruby 2.7 to 3.3

  • Ruby 2.7.7 から Ruby 3.3.1 にアップデートしたら String#gsub のメモリ割当が増加しているという報告
  • 次のようなコードのときに MatchData 関連で増加しているとのこと
s = "foo              "
s.gsub(/ (\s+)/) { " #{' ' * Regexp.last_match(1).length}" }
case str
when /^a/
  p $~ # => #<MatchData "a">
when /^b/c   # c オプションがある場合は MatchData を内部で生成しない
  p $~ # => nil
end
GitHubで編集を提案

Discussion