Ruby 文字列を連結する「+」と「<<」と「concat」と「join」のパフォーマンスを計測する
Rubyで、benchmarkを使用して、文字列を連結する「+」と「<<」と「concat」と「join」のパフォーマンスを計測するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.2p137
パフォーマンス計測
benchmarkを使用して、「+」と「<<」と「concat」と「join」を使用して、文字列を連結させるコードを1億回呼び出したパフォーマンスを計測するサンプルコードとなります。
require "benchmark"
# 繰り返し回数 1億回
i = 100000000
# 10は、reportラベルに使用する桁数
Benchmark.bm 10 do |r|
r.report "#+" do
i.times do
"a" + "b"
end
end
r.report "#<<" do
i.times do
"a" << "b"
end
end
r.report "#concat" do
i.times do
"a".concat("b")
end
end
r.report "#join" do
i.times do
%w(a b).join
end
end
end
実行結果
<1回目>
user system total real
#+ 11.781000 0.000000 11.781000 ( 11.826146)
#<< 9.828000 0.000000 9.828000 ( 9.822869)
#concat 10.985000 0.000000 10.985000 ( 10.975017)
#join 21.843000 0.000000 21.843000 ( 21.871881)
<2回目>
user system total real
#+ 10.875000 0.000000 10.875000 ( 10.863067)
#<< 10.297000 0.000000 10.297000 ( 10.305066)
#concat 12.062000 0.000000 12.062000 ( 12.070342)
#join 21.609000 0.000000 21.609000 ( 21.638371)
<3回目>
user system total real
#+ 10.984000 0.000000 10.984000 ( 10.990497)
#<< 9.688000 0.000000 9.688000 ( 9.672374)
#concat 11.391000 0.000000 11.391000 ( 11.394994)
#join 21.406000 0.000000 21.406000 ( 21.407953)
単純に連結させるだけなら、「<<」が一番早そうです。
-
前の記事
php convert_uudecodeでuuencodeフォーマットをデコードする 2021.10.02
-
次の記事
python PySimpleGUIでListboxを複数選択可能に設定する 2021.10.02
コメントを書く