[RUBY] Was ist schneller, Array # Sample oder Random # Rand?

Wenn Sie hunderttausende Male in der Stapelverarbeitung eine Schleife ausführen und jedes Mal eine Zufallszahl auswählen möchten, habe ich mich gefragt, welche besser ist, "Array # sample" oder "Random # rand", also habe ich sie überprüft. ..

Messen Sie sofort unten

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

Ergebnis ist

                 user     system      total        real
Array#sample  0.114216   0.002376   0.116592 (  0.120891)
Random#rand  0.198875   0.001285   0.200160 (  0.206403)

"Array # sample" war also etwas schneller. Da ich diesmal jedoch die Reichweite überschreite, kann dies daran liegen, dass ich intern "to_a" mache ...

Recommended Posts

Was ist schneller, Array # Sample oder Random # Rand?
Welches ist schneller, Methodenreferenz oder Lambda-Ausdruck
Java: Das Problem ist schneller, Stream oder Loop
Was ist schneller, Größe oder 0, als Argument von List # toArray?
Array ist Objekt
Was ist besser, Kotlin oder zukünftiges Java?
Die Frage, welche besser ist, ob oder wechseln