gsubよりtr の方が早い

railsのcommitに use tr instead of gsub when possible · 56d26d1 · rails/rails というのがありました。

そういえば私もtrあんまり使わずにgsubで書いている気がします。
どんぐらい早いかbenchmarkをとってみると

require 'benchmark/ips'
str = 'aaaaa_aaa'

Benchmark.ips do |x|
  x.report('gsub') do
    str.gsub('_', '')
  end
  x.report('tr') do
    str.tr('_', '')
  end
end
Calculating -------------------------------------
                gsub     30745 i/100ms
                  tr     73252 i/100ms
-------------------------------------------------
                gsub   388529.0 (±13.0%) i/s -    1936935 in   5.112875s
                  tr  1449224.1 (±12.3%) i/s -    7105444 in   5.023733s

差は歴然でした。

参考

use tr instead of gsub when possible · 56d26d1 · rails/rails
rails commit log流し読み(2014/10/01) - なるようになるブログ