Si vous voulez boucler des centaines de milliers de fois dans le traitement par lots et sélectionner un nombre aléatoire à chaque fois, je me demandais lequel est le meilleur, ʻArray # sample ou Random # rand`, alors je l'ai vérifié. ..
Mesurer immédiatement ci-dessous
range = (1..10000)
array = range.to_a
num = 1000000
Benchmark.bm 10 do |r|
  r.report 'Array#sample' do
    num.times do
      array.sample
    end
  end
  r.report 'Random#rand' do
    num.times do
      rand(range)
    end
  end
end
Le résultat est
                 user     system      total        real
Array#sample  0.114216   0.002376   0.116592 (  0.120891)
Random#rand  0.198875   0.001285   0.200160 (  0.206403)
Ainsi, ʻArray # sampleétait légèrement plus rapide. Cependant, cette fois, je passerange, peut-être parce que je fais to_a` en interne ...
Recommended Posts