Digest::MurmurHash

Build Status

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.

See also

https://sites.google.com/site/murmurhash/