मुझे लगता है कि सबसे अच्छा जवाब यह है कि यह निर्भर करता है। मेरे अनुभव में बहुत सारे कारक हैं जो कैशिंग एल्गोरिदम को चुनने में जाते हैं।
विचार करने के कारक
- बैलेंस पढ़ें / लिखें। (कितने प्रतिशत तक पहुँच लिखता है बनाम लिखता है)
- कैश की मात्रा।
- कैश के पीछे मीडिया का प्रकार। (वे धीमी गति से SATA ड्राइव या तेज SSD ड्राइव हैं?)
- हिट्स बनाम मिसेज। (चीजें कितनी बार फिर से लिखी या फिर से लिखी जाती हैं?
- औसत पहुंच आकार (यह पृष्ठ आकार चुनने में जाता है)
- कितनी महंगी पढ़ी-लिखी हैं।
एक बार जब आप सभी अलग-अलग कारकों पर विचार करते हैं, तो आपको एक कैश एल्गोरिथ्म खोजने की आवश्यकता होती है जो सबसे अच्छा संभालती है। उदाहरण के लिए कहें कि आपके पास एक एप्लिकेशन है जहां बहुत सारे लेखन हैं, कुछ फिर से लिखते हैं, हाल ही में लिखे गए डेटा और कुछ प्रकार के कताई मीडिया को पढ़ते हैं। इस मामले में आप हाइब्रिड कैशिंग एल्गोरिथ्म का एक प्रकार चाहते हैं। लिखने के डेटा को संभालने के लिए आप वाइज ऑर्डर ऑफ राइट्स (WOW) और डिस्क से पढ़े गए डेटा के लिए LRU एल्गोरिथम जैसा कुछ चाहते हैं। इसका कारण यह है कि डिस्क एक्सेस बहुत महंगे हैं और WOW एल्गोरिदम डेटा को लिखने के लिए इसे और अधिक कुशल बना देगा और LRU अक्सर एक्सेस किए गए डेटा को हमेशा कैश में रखेगा।
मान लें कि आपके पास SSD डिस्क हैं, जिनके पास बहुत तेज़ पहुंच का समय है, आप अपनी पसंद को LRU एल्गोरिथम की ओर गियर करना चाह सकते हैं क्योंकि डिस्क एक्सेस अपेक्षाकृत सस्ती है।
तो वास्तव में मैं जो कहना चाहता हूं वह यह है कि कोई "सर्वश्रेष्ठ" उत्तर नहीं है। सबसे अच्छा जवाब उन कारकों को पता है जो आपके लिए लागू होते हैं और एक एल्गोरिथ्म चुनते हैं जो उन्हें सबसे अच्छा संभालता है।
आपके लिए एल्गोरिथ्म कैसे खोजना है
अपने सिस्टम को प्रोफाइल करें। इसमें आमतौर पर मेमोरी एक्सेस के लिए आंकड़े रखने के लिए कोड जोड़ना शामिल होता है। प्रोफाइलिंग करके आप देख सकते हैं कि कौन से कारक आपके लिए सबसे महत्वपूर्ण हैं।
पिछले समय में मैंने सभी मेमोरी एक्सेस को ट्रैक करने के लिए कोड जोड़ा है। फिर बाद में मैं पैटर्न की तलाश करता हूं। मैं फिर से पढ़ता हूं, फिर से लिखता हूं, अनुक्रमिक पहुंच, यादृच्छिक अभिगम आदि की तलाश करता हूं।
एक बार जब आप महत्व की चीजों की पहचान कर लेते हैं, तो आपको सभी अलग-अलग प्रकार के कैशिंग एल्गोरिदम को देखने की जरूरत है, जो यह देखते हैं कि कौन सी चीजें सबसे अच्छी हैं।