Tabel di bawah ini merangkum kinerja berbagai fungsi hash yang dijelaskan di atas, untuk tiga set data:
1) Semua kata dan frasa dengan entri dalam Merriam-Webster 2nd Int'l Unabridged Dictionary (311.141 string, rata-rata panjang 10 karakter) Merriam-Webster.
2) Semua string di / bin / , / usr / bin / , / usr / lib / , / usr / ucb /
dan / usr / openwin / bin / * (66.304 string, panjang rata-rata 21 karakter).
3) Daftar URL yang dikumpulkan oleh perayap web yang berjalan selama beberapa jam semalam (28.372 string, panjang rata-rata 49 karakter).
Metrik kinerja yang ditunjukkan dalam tabel adalah "ukuran rantai rata-rata" di atas semua elemen dalam tabel hash (yaitu, nilai yang diharapkan dari jumlah kunci yang dibandingkan untuk mencari elemen).
Webster's Code Strings URLs
--------- ------------ ----
Current Java Fn. 1.2509 1.2738 13.2560
P(37) [Java] 1.2508 1.2481 1.2454
P(65599) [Aho et al] 1.2490 1.2510 1.2450
P(31) [K+R] 1.2500 1.2488 1.2425
P(33) [Torek] 1.2500 1.2500 1.2453
Vo's Fn 1.2487 1.2471 1.2462
WAIS Fn 1.2497 1.2519 1.2452
Weinberger's Fn(MatPak) 6.5169 7.2142 30.6864
Weinberger's Fn(24) 1.3222 1.2791 1.9732
Weinberger's Fn(28) 1.2530 1.2506 1.2439
Melihat tabel ini, jelas bahwa semua fungsi kecuali untuk fungsi Java saat ini dan dua versi fungsi Weinberger yang rusak menawarkan kinerja yang sangat baik dan hampir tidak dapat dibedakan. Saya sangat menduga bahwa kinerja ini pada dasarnya adalah "ideal teoritis", yang adalah apa yang akan Anda dapatkan jika Anda menggunakan generator bilangan acak yang benar di tempat fungsi hash.
Saya akan mengesampingkan fungsi WAIS karena spesifikasinya berisi halaman angka acak, dan kinerjanya tidak lebih baik daripada fungsi yang jauh lebih sederhana. Salah satu dari enam fungsi yang tersisa tampak seperti pilihan yang sangat baik, tetapi kita harus memilih satu. Saya kira saya akan mengesampingkan varian Vo's dan fungsi Weinberger karena kompleksitas tambahan mereka, meskipun kecil. Dari empat sisanya, saya mungkin akan memilih P (31), karena ini adalah yang termurah untuk dihitung pada mesin RISC (karena 31 adalah perbedaan dua kekuatan dua). P (33) juga murah untuk dihitung, tetapi kinerjanya sedikit lebih buruk, dan 33 adalah komposit, yang membuat saya sedikit gugup.
Josh