मेरी प्रोफाइलर रिपोर्ट में मैं निर्भरता इंजेक्शन के साथ नकली-आधारित परीक्षण के परिणामों को तेजी से देख रहा हूं। निर्भरता से कई स्थिर थे, लेकिन वे निम्न उदाहरण की तरह, उदाहरण के सदस्यों के लिए बदल रहे हैं क्योंकि हम अलगाव में तरीकों का परीक्षण करना चाहते हैं:निर्भरता इंजेक्शन से प्रदर्शन समस्याएं
class ShortLivedThing {
IDependency1 dep1;
IDependency1 dep2;
IDependency1 dep3;
...
int TheRealData;
// Constructor used in production
public ShortLivedThing() {
dep1 = new Dep1(); dep2 = new Dep2(); dep3 = new Dep3();
}
// DI for testing
public ShortLivedThing(IDependency1 d1, IDependency2 d2, IDependency3 d3) {
dep1 = d1(); dep2 = d2(); dep3 = d3();
}
}
बारी में निर्भरता समय के सबसे अधिक अन्य निर्भरता और इतने पर है। इसके परिणामस्वरूप पेड़ के तात्कालिकता (ज्यादातर "स्थैतिक") वस्तुओं हर बार परीक्षण विधि के बाहर एक विधि कॉल किया जाता है। प्रत्येक वस्तु बहुत छोटी होती है (केवल कुछ पॉइंटर्स), लेकिन पेड़ प्रभाव इसे लगातार बढ़ते प्रदर्शन हिट में बदल देता है।
हम इसके बारे में क्या कर सकते हैं?
क्या आप अपना उत्पादन कोड या अपने परीक्षण प्रोफाइल कर रहे हैं? –
मैं उत्पादन कोड प्रोफाइलिंग कर रहा हूँ। परीक्षण तेजी से चलते हैं क्योंकि वे निर्भरताओं की निर्भरताओं का निर्माण नहीं करते हैं। –