Ruby key?とhas_key?、include?、member?のパフォーマンスを計測する
![Ruby key?とhas_key?、include?、member?のパフォーマンスを計測する](https://mebee.info/wp-content/uploads/2019/10/ruby.png)
Rubyで、benchmarkを使用して、ハッシュのキーや値の存在確認を行うことができるkey?とhas_key?、include?、member?のパフォーマンスを計測するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.2p137
パフォーマンス計測
benchmarkを使用して、key?とhas_key?、include?、member?のパフォーマンスを計測するサンプルコードとなります。
require 'benchmark'
# 繰り返し回数(1000万回)
i = 10000000
# ハッシュを用意
h = {'key1' => 'val1', 'key2' => 'val2'}
# 10は、reportラベルに使用する桁数
Benchmark.bm 10 do |r|
r.report '#key' do
i.times do
h.key?('key1')
end
end
r.report '#has_key' do
i.times do
h.has_key?('key1')
end
end
r.report '#include' do
i.times do
h.include?('key1')
end
end
r.report '#member' do
i.times do
h.member?('key1')
end
end
end
実行結果
<1回目>
user system total real
#key 1.125000 0.000000 1.125000 ( 1.125168)
#has_key 1.297000 0.000000 1.297000 ( 1.482281)
#include 1.172000 0.000000 1.172000 ( 1.436044)
#member 1.219000 0.015000 1.234000 ( 1.528597)
<2回目>
user system total real
#key 1.360000 0.000000 1.360000 ( 1.383897)
#has_key 1.484000 0.000000 1.484000 ( 1.584512)
#include 1.250000 0.000000 1.250000 ( 1.292942)
#member 1.438000 0.000000 1.438000 ( 1.537328)
<3回目>
user system total real
#key 1.360000 0.000000 1.360000 ( 1.383897)
#has_key 1.484000 0.000000 1.484000 ( 1.584512)
#include 1.250000 0.000000 1.250000 ( 1.292942)
#member 1.438000 0.000000 1.438000 ( 1.537328)
どれもほぼ差がない結果となりました。
-
前の記事
python PySimpleGUIでTableのfontやサイズを設定する 2021.08.17
-
次の記事
C# numericUpDownの値を取得する 2021.08.18
コメントを書く