Skip to content

ashwinr/city_hash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CityHash for Ruby

This is an implementation of Google's CityHash for Ruby. It supports both 64-bit and 128-bit hashes. The newer CityHashCrc routines have not yet been implemented. Please note that the code has not been optimized for speed.

Installing CityHash

Installing CityHash is as simple as

gem install city_hash

Using CityHash

require 'city_hash'

# Calculate a 64-bit hash
CityHash.hash64('New York City')

# Calculate a 64-bit hash with seed
CityHash.hash64('East Village', 0xef23)

# Calculate a 64-bit hash with two seeds
CityHash.hash64('Meatpacking', 0xba3c, 0x5acd)

# Calculate a 128-bit hash
CityHash.hash128('SoHo')

# Calculate a 128-bit hash with seed
CityHash.hash128('Upper West Side', 0x8ad1)

Testing CityHash

The test functions generate random strings and compare the outputs of both the C and Ruby implementations. The source for these strings is Dostoevsky's 'Crime and Punishment', obtained from Project Gutenberg and compressed within test.zip.

Prerequisites

Google's implementation of Cityhash must be installed on the test system, since the test routines link against libcityhash.

This 'city_hash' gem must already be installed on the test system.

Running the tests

cd test/
./run.sh

Authors

Ashwin Ramaswamy

Copyright

Copyright (c) 2011 ashwinr. Please see license.txt for further details.