Hash Algorithm più veloce per i dati di testo

voti
14

Sto cercando di scegliere un algoritmo di hash per il confronto su max 20 dati di testo differenti.

Quale hash è meglio per questi requisiti?

  • Meno consumo di CPU
  • Piccolo ingombro (<= 32 byte)
  • Collisione non è un grosso problema
  • Possono essere generati da .NET Framework 2 (non dovrebbe essere una libreria di 3a parte)

Sto usando hash per meno occupazione di memoria e prestazioni confronto

È pubblicato 21/12/2008 alle 18:09
fonte dall'utente
In altre lingue...                            


8 risposte

voti
0

Se si è costretti ad algoritmi che esistono nel quadro

È MD5 abbastanza piccolo (16 byte)?

Meno consumo di CPU e ingombro ridotto sono di solito escludono a vicenda.

http://en.wikipedia.org/wiki/Time-space_tradeoff

Risposto il 21/12/2008 a 18:12
fonte dall'utente

voti
4

L' hash FNV è un algoritmo di hashing rapida noto. Non è crittograficamente sicuro, ma sembra che tu non hai bisogno di un hash sicuro.

Risposto il 21/12/2008 a 18:20
fonte dall'utente

voti
7

Paul Hsieh ha un dignitoso, semplice, veloce, a 32 bit SuperFastHash che esegue meglio di maggior parte delle funzioni di hash esistenti, è più facile da capire / implementare, e suona come esso corrisponde ai tuoi criteri.

Risposto il 21/12/2008 a 18:27
fonte dall'utente

Risposto il 21/12/2008 a 18:29
fonte dall'utente

voti
9

Se collisione non è un grosso problema si può prendere la prima lettera di ogni documento. Oppure si può usare la lunghezza del testo o la stringa con il testo.

Risposto il 21/12/2008 a 18:46
fonte dall'utente

voti
0

Quanto dura la necessità di tenere hash per? GetHashCode()è piuttosto accessibile, dà una piccola risposta (4 byte), che dovrebbe essere sufficiente (ri collisioni riduce) su 20 corde.

Tuttavia, GetHashCode()non deve essere mantenuta a base di dati - è bene per i confronti in memoria, però. Basta essere consapevoli del fatto che l'algoritmo può variare tra i quadri (e lo ha fatto tra 1,1 e 2,0).

L'altro vantaggio di questo è che è banale da usare - basta usare un Dictionary<string,Something>, che si occuperà di tutte le ecc hashing per voi.

Risposto il 21/12/2008 a 19:35
fonte dall'utente

voti
1

Un controllo molto veloce sarebbe di prendere la lunghezza di un testo e XOR con i primi 4 byte di esso e utilizzarlo come un hash. Se questo è abbastanza buono è estremamente veloce perché indipendente dal numero di byte del file.

Risposto il 21/12/2008 a 20:26
fonte dall'utente

voti
0

Ho avuto la stessa richiesta di myselve e ho implementato xxHashSharp . Basta fare in modo di prendere la libreria appropriata (x32 vs x64). E 'disponibile anche al di fuori del c # qui

Risposto il 15/01/2018 a 20:36
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more