Ruby 割り算の余りを求める「modulo」と「%」演算子のパフォーマンスを計測する

Ruby 割り算の余りを求める「modulo」と「%」演算子のパフォーマンスを計測する

Rubyで、benchmarkを使用して、割り算の余りを求める「modulo」と「%」演算子のパフォーマンスを計測するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.2p137

パフォーマンス計測

benchmarkを使用して、「modulo」と「%」演算子を使用して、割り算の余りを求めるコードを1000万回実行したパフォーマンスを計測するサンプルコードとなります。

require 'benchmark'

# 繰り返し回数 1000万回
i = 10000000

# 10は、reportラベルに使用する桁数
Benchmark.bm 10 do |r|

  r.report '#modulo' do
    i.times do
      5.modulo(3)
    end
  end

  r.report '#%' do
    i.times do
      5 % 3
    end
  end

end

実行結果

<1回目>
                 user     system      total        real
#modulo      0.625000   0.000000   0.625000 (  0.620812)
#%           0.516000   0.000000   0.516000 (  0.525003)

<2回目>
                 user     system      total        real
#modulo      0.594000   0.000000   0.594000 (  0.598925)
#%           0.531000   0.000000   0.531000 (  0.554996)

<3回目>
                 user     system      total        real
#modulo      0.704000   0.000000   0.704000 (  0.693880)
#%           0.578000   0.000000   0.578000 (  0.604295)

「%」の方が、パフォーマンスは良さそうにみえます。