Hallo,
Ik probeer momenteel een functie te maken die sneller is dan de bestaande MD5 hash functie (als ik mij niet vergis is dit één van de snellere). De reden hiervoor is dat ik hash tables wil maken maar dat MD5 nog te langzaam is. Een verminderde veiligheid en een acceptabel aantal collisions zijn geen probleem. Het is idee is puur om een hele snelle lookup table te krijgen.
Dit is mijn pseudocode:
Bij elke iteratie zal 'i' 1 omhoog gaan, door het gebruik van exponenten (pow) worden de enorme aantallen collisions tegen gegaan die er normaal zouden zijn bij het enkel optellen van de a <=> z cijfers.
Dus even meerdere malen getest maar wat blijkt: mijn functie is veel trager. Ik heb weliswaar in PHP getest, dus wellicht dat daar de built-in functies het verschil maken in snelheid.
MD5 hash functie
Resultaat: c18427314aa891c19a3c4e388211eb94
Duratie: 1.8 microseconden
Mijn custom hash functie
Resultaat: 1.6514813305334E+29
Duratie: 7.1 microseconden
Weet iemand een implementatie die potentieel sneller zou kunnen zijn voor in ieder geval PHP, C++ of Perl is wat mij betreft ook prima.
Ik probeer momenteel een functie te maken die sneller is dan de bestaande MD5 hash functie (als ik mij niet vergis is dit één van de snellere). De reden hiervoor is dat ik hash tables wil maken maar dat MD5 nog te langzaam is. Een verminderde veiligheid en een acceptabel aantal collisions zijn geen probleem. Het is idee is puur om een hele snelle lookup table te krijgen.
Dit is mijn pseudocode:
code:
1
2
3
4
5
6
7
8
9
10
| Array convert => a=1, b=2, c=3 en zo voort tot en met z=26 String to_be_hashed_string integer index for loop ( i = 0 ; i <= length ( to_be_hashed_string) ; ++i ) index += pow ( convert[substring(to_be_hashed_string, i, 1)], i ) end for print index |
Bij elke iteratie zal 'i' 1 omhoog gaan, door het gebruik van exponenten (pow) worden de enorme aantallen collisions tegen gegaan die er normaal zouden zijn bij het enkel optellen van de a <=> z cijfers.
Dus even meerdere malen getest maar wat blijkt: mijn functie is veel trager. Ik heb weliswaar in PHP getest, dus wellicht dat daar de built-in functies het verschil maken in snelheid.
MD5 hash functie
Resultaat: c18427314aa891c19a3c4e388211eb94
Duratie: 1.8 microseconden
Mijn custom hash functie
Resultaat: 1.6514813305334E+29
Duratie: 7.1 microseconden
Weet iemand een implementatie die potentieel sneller zou kunnen zijn voor in ieder geval PHP, C++ of Perl is wat mij betreft ook prima.
[ Voor 12% gewijzigd door Verwijderd op 29-05-2012 00:48 ]