LoginSignup
3
4

More than 5 years have passed since last update.

ハッシュへの代入方法のBenchmark

Last updated at Posted at 2015-12-30

背景

チームの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さんからコメントいただきまして、コードを修正しました。

3
4
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4