Разработчики из компании Google представили реализацию 64- и 128-разрядных hash-функций CityHash, позволяющих получить отпечаток фиксированной длины, идентифицирующий больший по размеру набор входящих данных. Код функций написан на языке C++, распространяется в рамках лицензии MIT и разработан в стиле "всё ради высокой производительности".

Код CityHash был написан для реализации высокопроизводительных хэш-таблиц, используемых для организации хранения баз ключ-значение, для использования в криптографии он не предназначен. Функция CityHash128 оптимизирована для строк размером в несколько сотен байт. Оптимизация кода, использование 64-разрядных регистров, обеспечение параллелизма выполнения на уровне инструкций и быстрый доступ к невыровненным областям памяти позволили добиться значительного превосходства в производительности по сравнению с другими реализациями хэшей. Ценой производительности является достаточно сильная запутанность кода.

Алгоритм работы CityHash подразумевает смешивание битов входящего потока. По сравнению с прошлыми реализациями высокопроизводительных хэшей от компании Google, CityHash демонстрирует в реальных условиях ускорение как минимум на 30%. В некоторых ситуациях наблюдается увеличение производительности до двух раз. Достаточная степень уникальности сгенерированных хэшей, подтверждена статистическими исследованиями.

Источник: http://www.opennet.ru/opennews/art.shtml?num=30218