Ruby で、key, value のペアを300万個くらい持つ Hash を高速に生成したいです。
key は user_id で、value はすべて true
です。Ruby のバージョンは CRuby 2.4.1 です。
一応、書いてみたんですけど、
ruby
1ids = User.pluck(:id) # ids の size は約300万 2values = Array.new(ids.size, true) 3 4hash = [ids, values].transpose.to_h
これでどこか遅そうな所ってありますかね?
本当は、
を精読すればいいんだと思うんですけど不勉強で追えてないです。
最後に一発で to_h
しているので、たぶんハッシュテーブルの作り直しとかは
発生してないんじゃないかなって気がするんですけど、
ぱっと見でtranspose
の部分が遅そうな気もします。
何かもっと効率的な書き方があったら教えてください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/13 04:21