2013-11-24 1 views
2

Я использую встроенную хэш-таблицу D, индексированную SHA1-digests (ubyte[20]), чтобы связать информацию в поисковой системе моей файловой системы.SHA1-Индексированная таблица хэшей в D

Существуют ли какие-либо структуры данных, более подходящие для этого (в D) из-за всех хороших свойств такого ключа: равномерно распределенного, случайного, фиксированного размера или поведение встроенных хэш-таблиц D автоматически определяет, что он мог бы, например, просто выбрать первые n (1-8) байты SHA1-digest в качестве индекса ковша?

ответ

2

Я думаю, что хеш-функция, используемая внутри карт стандартов, достаточно тривиальна (разумно), что она не будет сильно отличаться, если вы не используете код, который в основном выглядит. Имейте в виду, что полный ключ будет прочитан для окончательного сравнения, чтобы он загрузился в кеш в любом случае.

OTOH Я думаю, что есть метод opHash, который вы можете перегрузить.

+2

метод, о котором вы думаете, это 'size_t toHash() @trusted nothrow;' –

+0

Итак, я просто вернул первые 4 (32-разрядные) или 8 (64-разрядные) байты в зависимости от архитектуры. –

+0

@ Nordlöw, я советую против этой идеи ... :) 'toHash()' используется для чего-то другого. – DejanLekic

Смежные вопросы