Ruby 「delete」と「sub」と「gsub」と「slice」のパフォーマンスを計測する
Rubyで、benchmarkを使用して、文字列「abc」から「c」のみを除くことに限定したコードで「delete」と「sub」と「gsub」と「slice」のパフォーマンスを計測するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.2p137
パフォーマンス計測
benchmarkを使用して、「delete」と「sub」と「gsub」と「slice」のパフォーマンスを計測するサンプルコードとなります。
require 'benchmark'
# 繰り返し回数 100万回
i = 1000000
# 文字列を用意
s = 'abc'
# 10は、reportラベルに使用する桁数
Benchmark.bm 10 do |r|
r.report '#delete' do
i.times do
s.delete('c')
end
end
r.report '#sub' do
i.times do
s.sub('c', '')
end
end
r.report '#gsub' do
i.times do
s.gsub('c', '')
end
end
r.report '#slice' do
i.times do
s.slice(0,2)
end
end
end
実行結果
<1回目>
user system total real
#delete 0.219000 0.000000 0.219000 ( 0.224266)
#sub 0.375000 0.000000 0.375000 ( 0.383355)
#gsub 0.672000 0.000000 0.672000 ( 0.685552)
#slice 0.125000 0.000000 0.125000 ( 0.122571)
<2回目>
user system total real
#delete 0.203000 0.000000 0.203000 ( 0.197043)
#sub 0.500000 0.000000 0.500000 ( 0.496590)
#gsub 0.890000 0.000000 0.890000 ( 0.918149)
#slice 0.125000 0.000000 0.125000 ( 0.124601)
<3回目>
user system total real
#delete 0.188000 0.000000 0.188000 ( 0.203741)
#sub 0.469000 0.000000 0.469000 ( 0.474898)
#gsub 0.796000 0.000000 0.796000 ( 0.798647)
#slice 0.172000 0.000000 0.172000 ( 0.162053)
sliceが一番、文字列「abc」から「c」のみを除く場合に限り、パフォーマンスがよい結果となりました。
-
前の記事
javascript targetとcurrentTargetの違い 2021.09.14
-
次の記事
SQL Server 統計情報のサンプリングを抽出するクエリ 2021.09.14
コメントを書く