Ruby 配列からnilを削除できる「compact」と「delete_if」と「reject」のパフォーマンスを計測する

Rubyで、benchmarkを使用して、配列からnilを削除できる「compact」と「delete_if」と「reject」のパフォーマンスを計測するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.2p137
パフォーマンス計測
benchmarkを使用して、「compact」と「delete_if」と「reject」を使用して、配列からnilを削除するコードを1000万回実行したパフォーマンスを計測するサンプルコードとなります。
require 'benchmark'
# 繰り返し回数 1000万回
i = 10000000
arr = [ "a", nil, "b", nil, "c"]
# 10は、reportラベルに使用する桁数
Benchmark.bm 10 do |r|
r.report '#compact!' do
i.times do
arr.compact!
end
end
r.report '#delete_if' do
i.times do
arr.delete_if{ |x| x.nil? }
end
end
r.report '#reject!' do
i.times do
arr.reject!{ |x| x.nil? }
end
end
end
実行結果
<1回目>
user system total real
#compact! 0.641000 0.000000 0.641000 ( 0.635823)
#delete_if 2.516000 0.000000 2.516000 ( 2.559678)
#reject! 2.359000 0.016000 2.375000 ( 2.373555)
<2回目>
user system total real
#compact! 0.641000 0.000000 0.641000 ( 0.643726)
#delete_if 2.453000 0.000000 2.453000 ( 2.467691)
#reject! 2.516000 0.016000 2.532000 ( 2.615345)
<3回目>
user system total real
#compact! 0.640000 0.000000 0.640000 ( 0.640501)
#delete_if 2.485000 0.000000 2.485000 ( 2.815094)
#reject! 2.500000 0.000000 2.500000 ( 2.644525)
compactが、一番パフォーマンスは良さそうです。
-
前の記事
javascript onmouseleaveを使ってマウスカーソルが外れたイベントを取得する 2021.09.23
-
次の記事
php 配列を変数から生成する 2021.09.23
コメントを書く