Rubyのstringからsymbolへの変換はコロンが早い
stringからsymbolへの変換は、to_symを使うものだと思っていたけど:"hoge"でもできる。
んでどっちが早いのか調べてみた。
require "benchmark" n = 1_000_000 hash = { hoge: "" } Benchmark.bm(8) do |x| 3.times do x.report("to_sym :") { n.times{hash["hoge".to_sym]} } x.report("colon :") { n.times{hash[:"hoge"]} } end end
結果
user system total real to_sym : 1.090000 0.000000 1.090000 ( 1.100188) colon : 0.340000 0.000000 0.340000 ( 0.344089) to_sym : 1.030000 0.000000 1.030000 ( 1.036727) colon : 0.350000 0.000000 0.350000 ( 0.353148) to_sym : 1.050000 0.000000 1.050000 ( 1.057641) colon : 0.320000 0.010000 0.330000 ( 0.325692)
というわけでコロンで書いたほうが3倍くらい早いみたい。
ただ個人的にはto_symで書いたほうが読みやすいと思う。