2008-11-02 7 views
9

मेरे पास एक ऐसा एप्लिकेशन है जो हजारों वस्तुओं को बनाता है और नष्ट कर देता है। क्या यह कैशिंग और ऑब्जेक्ट्स का पुन: उपयोग करने लायक है, या डेल्फी के मेमोरी मैनेजर इतने तेज़ हैं कि ऑब्जेक्ट्स को कई बार बनाना और नष्ट करना इतना बड़ा नहीं है (कैश का ट्रैक रखने के विपरीत) जब मैं इसके लायक कहता हूं, निश्चित रूप से मैं देख रहा हूं एक प्रदर्शन बढ़ावा के लिए।क्या डेल्फी के मेमोरी मैनेजर द्वारा बनाई गई कैशिंग ऑब्जेक्ट्स के लायक है?

उत्तर

17

हाल के परीक्षण से - यदि वस्तु निर्माण महंगा नहीं है (यानी बाहरी संसाधनों पर निर्भर नहीं है - फ़ाइलों, रजिस्ट्री, डेटाबेस तक पहुंच ...) तो आपको डेल्फी के मेमोरी मैनेजर को मारने में कठिनाई होगी। यह तेज़ है।

यह निश्चित रूप से है कि यदि आप हाल ही में डेल्फी का उपयोग कर रहे हैं - यदि नहीं, तो SourceForge से FastMM4 प्राप्त करें और डेल्फी के आंतरिक एमएम के बजाय इसका उपयोग करें।

6

केवल एक प्रोफाइलर आपको बताएगा। एक तंग पाश में दोनों दृष्टिकोणों को आज़माएं और देखें कि शीर्ष पर क्या आता है :-)

1

मुझे लगता है कि यह आपके ऑब्जेक्ट्स को बनाने और नष्ट करने के दौरान निष्पादित कोड पर निर्भर करता है। TObject.Create और TObject से प्रभाव। डिस्ट्रॉय आमतौर पर उपेक्षित है और कैशिंग ओवरहेड द्वारा आसानी से आउटपुट हो सकता है।

आपको यह भी विचार करना चाहिए कि किसी ऑब्जेक्ट की स्थिति अलग-अलग हो सकती है जब इसे अभी बनाया जा सकता है।

0

अक्सर बताने का एकमात्र तरीका - इसे आजमा देना है।

यदि वर्तमान प्रदर्शन पर्याप्त है तो आपके पास प्रयास करने और इसे बढ़ाने के लिए बहुत अधिक कॉल नहीं है। हालांकि, यदि आपके पास प्रदर्शन समस्याएं हैं, तो कुछ कैशिंग (या वास्तव में कुछ अन्य रणनीतियों) मदद कर सकती हैं।

0

आपको कुछ आंकड़ों की भी आवश्यकता होगी कि कितनी बार एक विशिष्ट वस्तु (उदाहरण) का उपयोग किया जा रहा है। यदि आप नियमित रूप से डेटा के उसी सेट का संदर्भ दे रहे हैं, तो कैशिंग से वास्तव में प्रदर्शन में सुधार हो सकता है, लेकिन यदि एक्सेस को सभी संभावित ऑब्जेक्ट्स में वितरित किया जाता है, तो आपके कैश मिस-रेट की तुलना में यह बहुत अधिक हो सकता है।

15

मेमोरी आवंटन केवल कैश करना चाहते हैं इसका एक छोटा सा हिस्सा है। आपको एक अर्थात् वैध ऑब्जेक्ट बनाने की पूरी लागत जानने की आवश्यकता है, और इसकी तुलना कैश से आइटम्स को पुनर्प्राप्त करने की लागत से की जाती है, न केवल माइक्रो-बेंचमार्क के लिए: कैश प्रभाव (सीपीयू कैश, जो है) रनटाइम गतिशीलता को बदल सकता है वास्तविक लाइव चलने वाले एप्लिकेशन में।

या इसे एक और तरीका रखने के लिए, इसे मापें और पता लगाएं। यदि आप माप नहीं रहे हैं, तो आप अनुमान लगा रहे हैं, बस इंजीनियरिंग नहीं कर रहे हैं।

+0

मुझे पता है कि आप सही हैं। मैं बस सोच रहा था कि क्या इस क्षेत्र में बेंचमार्किंग करने के लायक थे या मेरे प्रयासों को कहीं और ध्यान केंद्रित करना था। डी 2009 संकलक बीटीडब्ल्यू में नई सुविधाओं के साथ अच्छा काम !! – Steve

3

आपको इस तरह के सवालों के जवाब देने के लिए वास्तविक दुनिया के भारों को मापना होगा। उन वस्तुओं में संसाधनों का आयोजन करने के आधार पर, कोई भी संसाधन विवाद, निर्माण लागत, आकार इत्यादि, उत्तर आपको आश्चर्यचकित कर सकता है, और लोड की प्रकृति के आधार पर भी बदल सकता है।

आमतौर पर यह निर्धारित करना बहुत मुश्किल होता है कि आपके प्रदर्शन के मुद्दों को मापने के बिना कहां होगा।

+0

मैं सुनता हूं कि आप क्या कह रहे हैं। मैं सिर्फ यह जानना चाहता था कि क्या इस क्षेत्र को प्रोफाइल करने पर विचार करना उचित था! – Steve

संबंधित मुद्दे