ตารางด้านล่างสรุปประสิทธิภาพของฟังก์ชันแฮชต่างๆที่อธิบายไว้ข้างต้นสำหรับชุดข้อมูลสามชุด:
1) คำและวลีทั้งหมดที่มีรายการในพจนานุกรม Int'l Unabridged Dictionary ที่สองของ Merriam-Webster (311,141 สตริง, ความยาวเฉลี่ย 10 ตัวอักษร)
2) สตริงทั้งหมดใน / bin / , / usr / bin / , / usr / lib / , / usr / ucb /
และ / usr / openwin / bin / * (66,304 สตริง, ความยาวเฉลี่ย 21 ตัวอักษร)
3) รายการ URL ที่รวบรวมโดยโปรแกรมรวบรวมข้อมูลเว็บซึ่งใช้เวลาหลายชั่วโมงในคืนที่ผ่านมา (28,372 สตริงความยาวเฉลี่ย 49 อักขระ)
ตัวชี้วัดประสิทธิภาพที่แสดงในตารางคือ "ขนาดลูกโซ่เฉลี่ย" เหนือองค์ประกอบทั้งหมดในตารางแฮช (เช่นค่าที่คาดหวังของจำนวนของคีย์เปรียบเทียบเพื่อค้นหาองค์ประกอบ)
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
ดูที่ตารางนี้เห็นได้ชัดว่าฟังก์ชั่นทั้งหมดยกเว้นฟังก์ชั่น Java ปัจจุบันและฟังก์ชั่น Weinberger ทั้งสองรุ่นที่หักนั้นให้ประสิทธิภาพที่ยอดเยี่ยมและแทบแยกไม่ออก ฉันคาดเดาอย่างมากว่าการแสดงนี้เป็น "อุดมคติเชิงทฤษฎี" ซึ่งเป็นสิ่งที่คุณจะได้รับหากคุณใช้ตัวสร้างตัวเลขสุ่มจริงแทนฟังก์ชันแฮช
ฉันจะแยกแยะฟังก์ชั่น WAIS เนื่องจากสเปคของมันมีหน้าของตัวเลขสุ่มและประสิทธิภาพของมันไม่ได้ดีไปกว่าฟังก์ชั่นที่ง่ายกว่าใด ๆ ฟังก์ชั่นทั้งหกที่เหลืออยู่ดูเหมือนจะเป็นตัวเลือกที่ยอดเยี่ยม แต่เราต้องเลือกอย่างใดอย่างหนึ่ง ฉันคิดว่าฉันตัดทอนตัวแปรของ Vo และฟังก์ชั่นของ Weinberger เนื่องจากความซับซ้อนที่เพิ่มเข้ามาของพวกเขา จากสี่ส่วนที่เหลือฉันอาจเลือก P (31) เนื่องจากมันถูกที่สุดในการคำนวณบนเครื่อง RISC (เพราะ 31 คือความแตกต่างของสองพลังของสอง) P (33) มีราคาถูกในทำนองเดียวกันในการคำนวณ แต่ประสิทธิภาพการทำงานนั้นแย่ลงเล็กน้อยและ 33 เป็นคอมโพสิตซึ่งทำให้ฉันกังวลเล็กน้อย
หยอกเย้า