Вы можете использовать GitHub API. Например, https://api.github.com/repos/octocat/Hello-World/pulls/488/files
octocat
является владельцем проекта, Hello-World
является проектом имя и 488
- номер запроса на получение. Вы можете изменить эти значения для вашего запроса. Этот запрос возвращает массив измененных файлов JSON, а атрибут filename
указывает путь к файлу.
Если коллизия не является грандиозным предприятием, можно взять первую букву каждого документа. Или можно использовать длину текста или строки с текстом.
У Paul Hsieh есть достойный, простой, быстрый, 32-разрядный SuperFastHash, который работает лучше, чем большинство существующих хеш-функций, легче понять/реализовать и кажется, что соответствует Вашим критериям.
Хеш FNV является известным быстрым алгоритмом хеширования. Это не криптографически безопасно, но это кажется, что Вам не нужен безопасный хеш.
Очень быстрая проверка должна была бы взять длину текста и XOR это с первыми 4 байтами из него и использования что как хеш. Если это достаточно хорошо, это чрезвычайно быстро потому что независимый от числа байтов файла.
Если Вы ограничиваетесь к алгоритмам, которые существуют в платформе
Действительно ли MD5 является достаточно маленьким (16 байтов)?
Меньше потребления ресурсов ЦП и Маленького места являются обычно взаимоисключающими.
Сколько времени хеш должен содержать для? GetHashCode()
довольно доступно, дает маленький ответ (4 байта), которые должны быть прекрасными (коллизии уменьшения ре) более чем 20 строк.
Однако GetHashCode()
не должен быть сохранен к базе данных - она хорошо для сравнений в оперативной памяти, все же. Просто знайте, что алгоритм может измениться между платформами (и сделал между 1,1 и 2.0).
Другое преимущество этого состоит в том, что это тривиально для использования - просто используют a Dictionary<string,Something>
, который будет иметь дело со всем хешированием и т.д. для Вас.