【xxhash】अत्यंत तेज़ गति से स्थानीय रूप से साइटों को सहेजने के लिए cuckooget बनाया गया【cuckoohash table】

4 min

language: ja bn en es hi pt ru zh-cn zh-tw

नमस्ते, मैं अक्षम हूँ।
मैंने इसे बनाया क्योंकि स्थानीय रूप से साइट का मिरर बनाने के लिए मुझे जो सुविधाएँ चाहिए थीं, वैसी कोई चीज़ मौजूद नहीं थी।
httpithub.cturackooget

परिचय

इस साइट की मिररिंग कार्यक्षमता HTTrack के निर्माता xavier roche से बहुत प्रभावित है।
[xavier roche’s homework](httplog.httrack.c
उनके ब्लॉग को पढ़ते हुए, मैंने निम्नलिखित लेख देखा।
[Coucal, Cuckoo-hashing-based hashtable with stash area C library](httplog.httrack.c/uc
कुकू हैश टेबल के संबंध में, कुमागी-सान की पसंदीदा स्लाइड प्रस्तुति, "आपकी अज्ञात हैश टेबल की दुनिया" में एक आसानी से समझ में आने वाली व्याख्या दी गई है।

मुझे एक विचार आया। यह वह हिस्सा है जहाँ, टकराव की स्थिति में, यह 'कुकू की आदत की तरह अन्य तत्वों को बाहर निकालता है'।
मैंने सोचा कि इस विशेषता का उपयोग तब किया जा सकता है जब एक विशाल सूची हो और डुप्लीकेशन की संभावना हो।
ahewfewjjwefawefj

हैश गणना

चूंकि सुरक्षा की आवश्यकता नहीं थी, मैंने हाल ही में xxhash को पाया और इसे शामिल किया।
चूंकि कुकू हैश टेबल के लिए दो प्रकार की आवश्यकता होती है, इसलिए उन्हें xxh32 और xxhash64 के साथ उत्पन्न किया जाता है।
इसके अलावा, जैसा कि इइगाउ-कुन ने बताया, मैंने टेबल के आकार की ऊपरी सीमा को निश्चित कर दिया था, इसलिए मैंने _resize के साथ टेबल के आकार को बदलने की सुविधा प्रदान की।

अद्वितीय भारण

गंतव्य URL को सहेजने की प्राथमिकता -w --weight विकल्प के साथ URL में शामिल स्ट्रिंग्स को क्रमिक रूप से वर्णित करके बदलती है।
उदाहरण के लिए, इससे पदानुक्रमित विनिर्देश पर निर्भर किए बिना लचीले ढंग से सेट करना संभव हो गया।

सबसे तेज़?

मैं ज़्यादा नहीं लिखूँगा क्योंकि मुझे आलोचना का सामना करना पड़ सकता है, लेकिन डिफ़ॉल्ट कनेक्शन की संख्या 50 है।
लेकिन ईमानदारी से कहूँ तो, 50 तक न जाने पर भी यह तेज़ है।
गति क्यों महत्वपूर्ण है, इसका कारण यह है कि मैं 5ch के UNIX बोर्ड को 2022 या 2023 के आसपास से सहेज रहा था। यह लगभग 30GB था।
उस समय, मैं यह देखकर हैरान था कि बहुत अधिक स्क्रिप्ट तूफान थे, और ऐतिहासिक थ्रेड्स और पोस्ट तेजी से पुराने लॉग में बहते जा रहे थे।
इसलिए, मेरे लिए, गति को प्राथमिकता देना अनिवार्य था।

बाकी है...

मैं एक कैश फ़ाइल बनाना चाहता हूँ, जिसे मैंने एक बार बनाने की कोशिश की थी और असफल रहा, और रुकावट के बाद निरंतर प्रसंस्करण को सक्षम करना चाहता हूँ, और शायद एक LRU कैश लागू करना चाहता हूँ...
मैं कई तरह से असफल रहा हूँ, इसलिए मैं किसी तरह इन सुविधाओं को शामिल करना चाहता हूँ।
तो फिर। फिर मिलेंगे।

और... मैं इतना थक गया था कि कंप्यूटर देखते-देखते सो गया था...