मैं वास्तव में एक बार खुद वैन वैन-बोस के पेड़ को बेंचमार्क कर चुका हूं। मैंने इसकी तुलना एए ट्री, हैशमैप और बिट ऐरे से की है।
परीक्षण size
अंतराल में यादृच्छिक संख्याओं के साथ आवेषण करते हैं [0, bound]
, फिर size
खोज करते हैं, फिर size
हटाते हैं और फिर size
खोजते हैं। हटाए गए यादृच्छिक संख्याओं पर भी किए जाते हैं, इसलिए आपको पहले यह पता लगाना होगा कि क्या वे संरचना में हैं।
यहाँ परिणाम ( size
= 2000000, bound
= 10000000) सेकंड में हैं:
AATreeLookup - O(n log n)
Inserting... 3.3652452
Searching... 5.2280724
Deleting... 7.3457427
Searching... 9.1462039
HashLookup - O(n) expected
Inserting... 0.3369505
Searching... 0.6223035
Deleting... 0.9062163
Searching... 1.1718223
VanEmdeBoasTree - O(n log log n)
Inserting... 0.7007531
Searching... 1.1775800
Deleting... 1.7257065
Searching... 2.2147703
ArrayLookup - O(n)
Inserting... 0.0681897
Searching... 0.1720300
Deleting... 0.2387776
Searching... 0.3413800
जैसा कि आप देख सकते हैं, वैन एमडे-बोस पेड़ लगभग दो बार हैश मानचित्रों के समान धीमा हैं, दस बार बिट सरणियों के रूप में धीमी गति से, और बाइनरी खोज पेड़ों के रूप में 5 गुना तेज़ हैं।
बेशक उपरोक्त को एक अस्वीकरण की आवश्यकता है: परीक्षण कृत्रिम हैं, आप संभवतः कोड में सुधार कर सकते हैं या एक संकलक के साथ एक अलग भाषा का उपयोग कर सकते हैं, जिसका आउटपुट तेज है, और इसी तरह और आगे।
यह अस्वीकरण उस कारण के दिल में है जो हम एल्गोरिदम डिजाइन में एसिम्प्टोटिक विश्लेषण का उपयोग करते हैं: क्योंकि आपको पता नहीं है कि स्थिरांक क्या हैं और जैसे ही पर्यावरणीय कारकों के आधार पर स्थिरांक बदल सकते हैं, सबसे अच्छा हम जो कर सकते हैं वह एक स्पर्शोन्मुखी विश्लेषण है।
अब, उपर्युक्त उदाहरण में बनाम : के मामले में, मेरे वैन एमड-बोस पेड़ में तत्व सम्मिलित हैं। , और , जो कि एक कारक 6 सुधार है, जो व्यवहार में थोड़ा सा है। इसके अतिरिक्त, वैन एमडे-बोस पेड़ों में अच्छे निरंतर कारक हैं (यह सभी इस छोटे से अंतर के लिए व्यवहार में निरंतर कारकों के बारे में है) क्योंकि उन्हें खुद को संतुलित करने की आवश्यकता नहीं है।lognloglogn232log232=32log32=5