दिलचस्प पोस्ट
नेस्टेड संरचनाओं को अपडेट करने के लिए क्लीनर तरीका / बिन / श अलग तरीके से / bin / bash क्यों व्यवहार करता है भले ही एक दूसरे को इंगित करता है? उद्देश्य- C: BOOL vs bool JavaScript में सरणी के माध्यम से लूप का सबसे तेज़ तरीका क्या है? मैं एक सार सी # वर्ग पर एक सार निर्माता क्यों नहीं बना सकता? एक "अद्वितीय" अज्ञात उपयोगकर्ता का पता लगा रहा है @ सेवा दो बार का निर्माण कर रहे हैं सादे अंग्रेजी में PHP इको और PHP रिटर्न में क्या अंतर है? एक पाठ फ़ाइल को कैसे संशोधित करें? अजगर में मैट्रिक्स गुणा? मेम्क्पी के लिए बढ़ी हुई आरईपी MOVSB एसटीएल वेक्टर और धागा-सुरक्षा JavaScript console.log त्रुटि का कारण बनता है: "मुख्य थ्रेड पर तुल्यकालिक XMLHttpRequest पदावनत है …" क्यों उपखंड की तुलना में शार्क और मर्जुरियल में आसान विलय कर रहा है? MongoDB BSON दस्तावेज़ आकार सीमा को समझना

बुलेट और आरएसपीसी रत्नों का उपयोग करते हुए एन + 1 क्वेरीज़ को कम करना

आरएसपीसी के साथ बुलेट रत्न का उपयोग करने का एक प्रभावी तरीका क्या है? अभी मुझे लगता है कि अगर मैं इसे अपने मौजूदा यूनिट परीक्षण ढांचे से उपयोग करता हूं तो मुझे परीक्षाओं में बहुत अधिक सूचनाएं या असफलता मिल रही हैं क्योंकि परीक्षणों के भीतर n + 1 प्रश्नों के कारण ये मेरे उत्पादन अनुप्रयोग में क्या होता है, जैसे कि किसी की जाँच करना मूल्य या संघ जैसे, n + 1 विफलताओं को ठीक करने के लिए मेरे नियंत्रकों या मॉडल पर कुछ भी सेट करने की आवश्यकता नहीं होती है, बल्कि इसके लिए मेरे परीक्षण सेटअप में कुछ सेट करने की आवश्यकता होती है जो उस विशेष त्रुटि को फेंकने के लिए नहीं है और मुझे अपने आवेदन पर कोई वास्तविक प्रदर्शन सुधार नहीं दिखाई देता है।

वेब के समाधान से एकत्रित समाधान "बुलेट और आरएसपीसी रत्नों का उपयोग करते हुए एन + 1 क्वेरीज़ को कम करना"

सबसे प्रभावी तरीका बिल्कुल नहीं है परीक्षणों में n + 1 प्रश्नों को कम करने के लिए कुछ वैध लाभ हो सकते हैं, सबसे स्पष्ट रूप से समग्र निष्पादन समय को तेज करने के लिए। यह काफी संभव है, हालांकि, आप या तो बहुत अधिक परीक्षण कर रहे हैं या संभव से कम महत्वपूर्ण लाभ कर रहे हैं। मैं आम तौर पर इसे एप्लिकेशन के संपूर्ण मूल्य में योगदान करने के बजाय परीक्षणों को अपनाने में सहायता करने के लिए अतिरिक्त कोड लिखने के लिए अपरिहार्य रूप से ढूंढता हूं।

कृपया मुझे अपना समय का वैकल्पिक उपयोग करने का प्रस्ताव दें आपके सुविधा के स्तर की पूर्ण न्यूनतम यूनिट परीक्षण मैं व्यक्तिगत रूप से सत्यापन संबंधी मुद्दों और धन या अन्य गणित के जटिल तरीकों पर ध्यान केंद्रित करना चाहता हूं, आपके पास अलग प्राथमिकताओं हो सकती हैं रेखा को आकर्षित करने से आपके टेस्ट सूट का सबसे बेकार और नाजुक हिस्सा लिखने के समय की एक पूरी गुच्छा मुक्त हो जाएगी, जो आपके रखरखाव बजट के अधिकांश भाग पर होगा।

अब, आपके सभी अतिरिक्त समय क्या करें? चिंता मत करो, हम आपके लिए कुछ खोज लेंगे … आप कुछ स्वीकार्यता परीक्षण लिखकर शुरू कर सकते हैं, विशेष रूप से उन वस्तुओं के लिए जो कि ऑब्जेक्ट्स का उपयोग करते हैं, जिनके लिए आपने यूनिट टेस्ट की एक पूरी टीम को छोड़ दिया है। अब आपके एन + 1 चेतावनियां वास्तव में एक ही स्थान से आ रही हैं, जब वे उपयोगकर्ता को पृष्ठ को हिट करेंगे। अब आप सभी n + 1 प्रश्नों को निकाल सकते हैं।

लेकिन रुकें! ऐसा न करें कि या तो इसके बजाय, स्पर्श विकल्प का उपयोग करने के लिए अपने रिश्तों को स्थापित करने के लिए एक अच्छा सौदा कम समय बिताना फिर, जब कोई बच्चा ऑब्जेक्ट अपडेट हो जाता है, तो माता-पिता को भी अपडेट किया जाएगा। यह एन + 1 प्रश्नों के साथ क्या करना है, आप सोच सकते हैं ऐसा लगता है कि हम बस क्वेरी जोड़ रहे हैं …

यही वह जगह है जहां रूसी गुड़िया कैशिंग में आता है। इसे जोड़ना, और इसे ठीक से जांचना, मुक्त इकाई परीक्षण और एन +1 उन्मूलन का समय (और फिर कुछ, यदि आप सावधान नहीं हैं) का उपभोग करेंगे। अच्छी बात यह है कि यह अधिक "वास्तविक दुनिया" है, आपके मॉडलों और whatnot में महत्वपूर्ण या अप्रासंगिक क्रियान्वयन के परिवर्तन के लिए और अधिक लचीला है, और अपने आवेदन को एक बहुत बड़ा प्रदर्शन बढ़ावा देने के साथ-साथ हर एन + 1 क्वेरी को समाप्त करने से परे अप सामने हो सकता है प्रदान की है। आप नेस्टेड कैशिंग में जितना संभव हो सके उतना ही आगे बढ़ना चाहते हैं और हर तरह से आज़ादी के रूप में आलसी रूप से लोड करें, इस पद्धति का पूर्ण लाभ उठाएं।

लंबे जीवित n + 1!