Sha256: 77b6ee97e6f10c014cfb2f037a3313e641d53652ec04aed5569ea9dfa4488aec
Contents?: true
Size: 1.1 KB
Versions: 2
Compression:
Stored size: 1.1 KB
Contents
require "bundler/setup" require 'multi_string_replace' require 'benchmark' class String def mgsub(key_value_pairs=[].freeze) regexp_fragments = key_value_pairs.collect { |k,v| k } gsub( Regexp.union(*regexp_fragments)) do |match| key_value_pairs.detect{|k,v| k =~ match}[1] end end end body = File.read(File.join('spec', 'fixtures', 'test.txt')) replace = { 'Lorem' => 'XXXX', 'ipsum' => 'yyyyy', 'sapien' => 'zzzzzz', 'sed' => 'pppppppp', 'Fusce' => 'wwwwwwww', 'non' => 'NON', 'sit' => 'SIT', 'laoreet' => 'lllll', 'Cras' => 'uuuuuuuu', 'nunc' => 'eeeeeee', 'cursus' => '乧乨乩乪乫乬乭乮乯买乱乲乳乴乵乶乷乸乹乺乻乼乽乾乿', } File.write('replaced.txt', body.gsub(/(#{replace.keys.join('|')})/, replace)) File.write('replaced2.txt', MultiStringReplace.replace(body, replace)) Benchmark.bmbm do |x| x.report "multi gsub" do 100.times { body.mgsub(replace.map { |k, v| [/#{k}/, v] } ) } end x.report "MultiStringReplace" do 100.times { MultiStringReplace.replace(body, replace) } end x.report "mreplace" do 100.times { body.mreplace(replace) } end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
multi_string_replace-1.0.2 | bin/benchmark.rb |
multi_string_replace-1.0.1 | bin/benchmark.rb |