[RUBY] Quel est le plus rapide, Array # sample ou Random # rand?

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

Quel est le plus rapide, Array # sample ou Random # rand?
Qui est plus rapide, référence de méthode ou expression lambda
Java: dont le problème est plus rapide, en flux ou en boucle
Quel est le plus rapide, taille ou 0, comme argument de List # toArray?
Le tableau est un objet
Quel est le meilleur, Kotlin ou futur Java?
La question de savoir quel est le meilleur, si ou changer