我经常需要随机字节来测试字节缓冲区上的各种方法。目前我正在使用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)
答案 0 :(得分:4)
在Random
类bytes
方法中,您必须传递将为您执行操作的字节大小
Random.new.bytes(10) # => "\xD7:R\xAB?\x83\xCE\xFAkO"