Ruby 条件を指定して配列の最大値を求める「max」と「max_by」のパフォーマンスを計測する
Rubyで、benchmarkを使用して、条件を指定して配列の最大値を求める「max」と「max_by」のパフォーマンスを計測するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.2p137
パフォーマンス計測
benchmarkを使用して、「max」と「max_by」を使用して、文字列と数値が混在している配列[1, 2, “3”]から全て数値に変換して最大値を求めるコードを1000万回実行したパフォーマンスを計測するサンプルコードとなります。
require 'benchmark'
# 繰り返し回数 1000万回
i = 10000000
arr = [97, 98, 99]
# 10は、reportラベルに使用する桁数
Benchmark.bm 10 do |r|
r.report '#pack' do
i.times do
arr.pack("c*")
end
end
r.report '#map' do
i.times do
arr.map {|x| x.chr}.join
end
end
end
実行結果
<1回目>
user system total real
#max 3.891000 0.000000 3.891000 ( 3.999200)
#max_by 5.468000 0.015000 5.483000 ( 5.521457)
<2回目>
user system total real
#max 4.015000 0.016000 4.031000 ( 4.393769)
#max_by 5.672000 0.015000 5.687000 ( 5.915374)
<3回目>
user system total real
#max 3.937000 0.000000 3.937000 ( 4.069262)
#max_by 5.406000 0.000000 5.406000 ( 5.606742)
maxの方がパフォーマンスは良さそうです。
-
前の記事
javascript lodashを使って配列からランダムに値を抽出する 2021.09.22
-
次の記事
php 連想配列をキー名で逆順にソートする 2021.09.22
コメントを書く