Ruby 「三項演算子」と「if文」のパフォーマンスを計測する

  • 作成日 2021.07.15
  • 更新日 2022.08.08
  • Ruby
Ruby 「三項演算子」と「if文」のパフォーマンスを計測する

Rubyで、benchmarkを使用して、「三項演算子」と「if文」のパフォーマンスを計測するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.2p137

パフォーマンス計測

benchmarkを使用して、「三項演算子」と「if文」を使用して、条件式により処理を分岐するコードを1億回実行したパフォーマンスを計測するサンプルコードとなります。

require 'benchmark'

# 繰り返し回数 1億回
i = 100000000
x = 1

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

  r.report '#三項演算子' do
    i.times do
      str1 = x == 1 ? "xは1" : "xは1以外"
    end
  end

  r.report '#if' do
    i.times do
      str2 = if x == 1
        "xは1"
      else
        "xは1と2以外"
      end
    end
  end

end

実行結果

<1回目>
                 user     system      total        real
#三項演算子       7.641000   0.000000   7.641000 (  7.632914)
#if          7.875000   0.000000   7.875000 (  7.898420)

<2回目>
                 user     system      total        real
#三項演算子       8.063000   0.000000   8.063000 (  8.362242)
#if          8.344000   0.016000   8.360000 (  8.642226)

<3回目>
                 user     system      total        real
#三項演算子       7.844000   0.016000   7.860000 (  8.134246)
#if          8.140000   0.031000   8.171000 (  8.473809)

「三項演算子」が、パフォーマンスは少し良さそうです。