刷题的时候发现的,同为 rand() 方法,效率也有差异
require 'benchmark'
Benchmark.bm do |x|
n = 5000000
x.report { n.times { Random.rand } }
x.report { n.times { rand } }
x.report { n.times { Random.rand 5000 } }
x.report { n.times { rand 5000 } }
end
具体表现为 Random.random 方法 会被 Keneral.rand() 略微慢一点, 但是加入参数以后 Keneral.rand 的执行时间就会达到 Random.rand 的两倍。 查了下文档 说是 Kerner.rand(number)对传入的参数执行 numebr.abs,但是 Random.rand 遇到负数入参 会抛出异常