Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
text = 'asd'
Digest::SHA1.digest(text)[-1].ord & 0x7 == Integer('0x'+Digest::SHA1.hexdigest(text))%8 # true
require 'digest'
require 'zlib'
max = 2000000
def measure(title)
start = Time.now
yield if block_given?
elapse = Time.now - start
puts "#{title}: #{elapse} sec"
end
measure("with_crc32") {
(0..max).each do |i|
Zlib.crc32("text #{i}") % 8
end
}
measure("with_sha1") {
(0..max).each do |i|
Integer('0x'+Digest::SHA1.hexdigest("text #{i}"))%8
end
}
require 'digest'
require 'benchmark'
text = 'Hello world'
N=1_000_000
Benchmark.bm do |x|
x.report{ N.times{ Integer('0x'+Digest::SHA1.hexdigest(text)) } }
x.report{ N.times{ Digest::SHA1.hexdigest(text).to_i(16) } }
end
user system total real
3.360000 0.000000 3.360000 ( 3.373353)
2.600000 0.000000 2.600000 ( 2.593256)
sub aaa ($text) { return hex( substr Digest::SHA1::sha1_hex($text), -2, 1 ) % 8; } Benchmark: timing 1000000 iterations of node1... node1: 1 wallclock secs ( 0.80 usr + 0.00 sys = 0.80 CPU) @ 1254705.14/s (n=1000000) Rate node1 node1 1254705/s --
Правда ли, что Go быстрее Ruby?