背景
チームのRubyコードの中で、
ハッシュへの代入方法が統一されてないことに気がついた。
以下の二通り
param.store('user_id', 10)
param['user_id'] = 10
統一したいね、できればパフォーマンスいいほうを採用したいね。
と。
いざ実験
require 'benchmark'
param = {}
param2 = {}
Benchmark.bm 10 do |r|
r.report "Hash#store" do
for i in 0..1000000
param.store("Hello world #{i}", i)
end
end
r.report "Hash#[]=" do
for i in 0..1000000
param2["Hello world #{i}"] = i
end
end
end
結果
user system total real
Hash#store 1.250000 0.060000 1.310000 ( 1.304982)
Hash#[]= 1.210000 0.060000 1.270000 ( 1.275874)
ほぼ変わらない。。微々たる差だが、早いみたいなので、Hash#[]=を採用しようと思う。
個人的にもRuby初心者で他の言語触ったことがある人でも直感的に分かるので、
こっちの書き方のほうが好きだ。
param['user_id'] = 10
編集 & 追記
scivolaさんからコメントいただきまして、コードを修正しました。