Digest::MurmurHash
MurmurHash is a algorithm desiged by Austin Appleby.
This library have some classes for MurmurHash algorithm.
Digest::MurmurHash1 use algorithm MurmurHash1(32-bit).
Digest::MurmurHash2 use algorithm MurmurHash2(32-bit).
Digest::MurmurHash2A use algorithm MurmurHash2A(32-bit).
Digest::MurmurHash64A use algorithm MurmurHash64A(64-bit).
Digest::MurmurHash64B use algorithm MurmurHash64B(64-bit).
Digest::MurmurHashNeutral2 use algorithm MurmurHashNeutral2(32-bit).
Digest::MurmurHashAligned2 use algorithm MurmurHashAligned2(32-bit).
Digest::MurmurHash3_x86_32 use algorithm MurmurHash3 for 32-bit platform (32-bit).
Digest::MurmurHash3_x86_128 use algorithm MurmurHash3 for 32-bit platform (128-bit).
Digest::MurmurHash3_x64_128 use algorithm MurmurHash3 for 64-bit platform (128-bit).
(Digest::MurmurHash class was nothing)
All classes compliance Digest API of Ruby.
Usage
require 'digest/murmurhash'
# MurmurHash1 can use like same than Digest::XXX.
p Digest::MurmurHash1.hexdigest('murmurhash') #=> d5ab09c7
p Digest::MurmurHash1.digest('murmurhash') #=> \xD5\xAB\x09\xC7
p Digest::MurmurHash1.rawdigest('murmurhash') #=> 3339299797
p Digest::MurmurHash1.file("./LICENSE.txt").hexdigest #=> "41962e71"
Feature
- Very fast because hash algorithm is written by C extention
- You can try all Hurmurhash algorithms
- You can use same interface built-in Digest::MD5,SH1,... classes.
Benchmark
$ bundle ex ruby spec/bench.rb
### condition
RUBY_VERSION = 2.2.2
count = 100
data size = 1024 KB
### benchmark
MurmurHash1 0.05145844700746238
MurmurHash2 0.03399810096016154
MurmurHash2A 0.032202123024035245
MurmurHash64A 0.01880742999492213
MurmurHash64B 0.02227930899243802
MurmurHashNeutral2 0.04134096298366785
MurmurHashAligned2 0.03514020598959178
MurmurHash3_x86_32 0.1174831380485557
MurmurHash3_x86_128 0.1244338889955543
MurmurHash3_x64_128 0.07122775202151388
Digest::MD5 0.1401238819817081
Digest::SHA1 0.09980463003739715
Digest::SHA256 0.2248609460075386
Digest::SHA2 0.2245309569989331
OpenSSL::HMAC(sha256) 0.23656713595846668
Base64 0.1765239799860865
Zlib.crc32 0.009485946036875248
Installation
Add this line to your application's Gemfile:
gem 'digest-murmurhash'
And then execute:
$ bundle
Or install it yourself as:
$ gem install digest-murmurhash
License
See the file LICENSE.txt.