speed_test.rb
来自「CRC校验采用多项式编码方法。多项式乘除法运算过程与普通代数多项式的乘除法相同。」· RB 代码 · 共 43 行
RB
43 行
require 'digest/crc32_in_ruby'
require 'digest/crc32_in_c'
require 'digest/md5'
require 'digest/sha1'
require 'benchmark'
include Benchmark
def random_string(size)
s = ""
size.times {s << rand(256).chr}
s
end
def rand_string(maxSize = 100)
random_string(1+ rand(maxSize))
end
def rand_strings(num, maxSize = 100)
Array.new(num).map {rand_string(maxSize)}
end
def compare(classes, repetitions, string)
bmbm do |x|
classes.each do |klass|
x.report(klass.inspect) do
digester = klass.new
repetitions.times { digester << string }
hd = digester.hexdigest
end
end
end
end
string = random_string(1_000_000)
compare([Digest::CRC32InC, Digest::MD5, Digest::SHA1], 250, string)
puts ""
compare([Digest::CRC32InRuby], 1, string)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?