如何降低我为Ruby对象分配的内存和分配的对象?

时间:2020-10-14 14:48:05

标签: ruby memory memory-management micro-optimization

我正在做一些分析,并为我的代码获得以下结果。

按位置分配的内存

145,470,848 receiver_matches_finder.rb:247 <-145MB

按位置分配的对象

2,863,763 receiver_matches_finder.rb:247 <-280万个对象

======

代码的要点在于,它采用字符串并将其替换为富正则表达式的文本。我正在遍历一个大循环,每次text都不同(重复数千个项目)

246   regex_text = ''
247   text.chars.each do |char|
248     regex_text << get_regex_substitution(char)
249   end
250   def self.get_regex_substitution(char)
251     CHAR_TO_SUBSTITUTION_MAPPING[char] || char
252   end

  CHAR_TO_SUBSTITUTION_MAPPING = {
      '0' => "[0o]",
      '1' => "[il1]{1,2}",
      'g' => "[g0oq]",
      'o' => "[o0]{1,2}",
  }.freeze

text.chars遍历文本中的每个字符,并使其等效于正则表达式替换。

我不确定是否可以提高此代码的效率?

0 个答案:

没有答案