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 + -
显示快捷键?