Rubyの配列のシャッフル
http://kaosf.kirara.st/sb/log/eid239.html
require 'benchmark' n = 1000_000 a = (0..n).to_a b = (0..n).to_a Benchmark.bm do |x| x.report { a.sort_by{ rand } } x.report { b.shuffle } end
ruby 1.9.1
user system total real 6.485000 0.000000 6.485000 ( 6.593750) 0.203000 0.000000 0.203000 ( 0.203125)
user system total real 6.328000 0.031000 6.359000 ( 6.562000) 0.172000 0.000000 0.172000 ( 0.187000)
これだけ大きな配列をシャッフルするのかというのがあるけど,それにしてもsort_by { rand }は遅い.1.8.6以下を使い続けないと行けない理由がそれほどあるとは思えないので,素直にshuffleをつかいませう.