我经常需要随机字节来测试字节缓冲区上的各种方法。目前我正在使用SecureRandom.random_bytes
,但由于它要求安全,所以速度较慢。有没有一种替代方案可以使用C扩展来快速生成这种情况下的随机字节?
更新:
最简单的方法是使用Random.new
而不是SecureRandom
。
require 'securerandom'
require 'benchmark'
Benchmark.bm(12) do |x|
x.report("SecureRandom:") { 100.times { SecureRandom.random_bytes(1024*1024*5) } }
x.report("Random:") { 100.times { Random.new.bytes(1024*1024*5) } }
end
交付:
user system total real
SecureRandom: 15.510000 0.170000 15.680000 ( 15.952913)
Random: 0.920000 0.120000 1.040000 ( 1.070739)
在Random
类bytes
方法中,您必须传递字节大小,这将为您的示例
Random.new.bytes(10) # => "xD7:RxAB?x83xCExFAkO"
点击此处获取更多参考http://ruby-doc.org/core-2.2.0/Random.html