2012-11-13 17 views
5

मेरे पास एक .NET थ्रेड है जो कोर # 7 को आवंटित किया गया है। थ्रेड फ़ंक्शन 300ms में एक बार ट्रिगर होता है। शुरुआत में एक कॉल निष्पादित करने में लगभग 20-30 एमएस लगते हैं। लेकिन इस बार धीरे-धीरे बढ़ता है और 2,52,000 कॉल के बाद 150 मिलियन से अधिक हो जाता है।थ्रेड प्रोसेसर उपयोग धीरे-धीरे बढ़ता है

इसके अलावा, मैं 10% पर कोर # 7 शुरू होता है के उपयोग पर ध्यान दिया है। उस समय तक थ्रेड फ़ंक्शन पर कॉल की संख्या कोर # 7 के 2,52,000 प्रोसेसर उपयोग तक पहुंच जाती है, लगभग 60% हो जाती है। जब मैं थ्रेड फ़ंक्शन को ट्रिगर करना बंद करता हूं, प्रोसेसर का उपयोग 0% हो जाता है। लेकिन जब मैं फिर से शुरू करना शुरू करता हूं तो मूल उपयोग 60% से शुरू होता है (0% से नहीं) और फिर धीरे-धीरे बढ़ता है।

मैं भी देखा है आवेदन के लिए कोई स्मृति रिसाव होती है।

मेरी धागा समारोह अंदर

मैं दो शब्दकोश के तत्वों के संयोजन कर रहा हूँ और एक foreach पाश में एक और शब्दकोश में जोड़ने से। शब्दकोश में तत्वों की संख्या हो जाएगा हमेशा 45

मैं चाहता हूँ इस आवेदन 24/7 चल रहा हो। इस प्रोसेसर के उपयोग को स्थिर बनाने के लिए कृपया मुझे कुछ सुझाव बताएं।

+0

आप कहते हैं, "शब्दकोश में तत्वों की संख्या हमेशा 45 हो जाएगा" क्या यह तीनों शब्दकोशों में से प्रत्येक में तत्वों की संख्या है? क्या आप सुनिश्चित हैं कि कोई भी शब्दकोश नहीं बढ़ रहा है? यह मुझे एक कस्टम कुंजी प्रकार का उपयोग करके एक शब्दकोश की तरह लगता है जो 'GetHashCode' को सही ढंग से लागू नहीं करता है। –

+0

धन्यवाद जिम Mischel, नहीं। संयुक्त शब्दकोश की अधिकतम संख्या 45 है। इसे 45 तक पहुंचने के बाद साफ़ कर दिया जाएगा। अन्य दो शब्दकोशों की अधिकतम संख्या कभी भी 10 पार नहीं हो जाती है। मेरा शब्दकोश 'शब्दकोश myResults = नया शब्दकोश ; ' –

+0

फिर आपको कुछ कोड दिखाना होगा। यह बेहद असंभव है कि थ्रेडिंग लाइब्रेरी इस बढ़ते CPU उपयोग को जन्म दे रही है। अधिक संभावना है कि यह आपके कोड में कुछ है। –

उत्तर

4

आप एक Dictionary में कोई आइटम जोड़ने जब क्षमता में वृद्धि किया जा सकता है। क्या आपका शब्दकोश हमेशा के लिए बढ़ता जा रहा है?

MSDN से:

तो गणना क्षमता से कम है, इस विधि एक हे (1) आपरेशन दृष्टिकोण। यदि नए तत्व को समायोजित करने के लिए क्षमता में वृद्धि की जानी चाहिए, तो यह विधि ओ (एन) ऑपरेशन बन जाती है, जहां एन गणना होती है।

+0

धन्यवाद जोनाथन रेनहार्ट, मेरे शब्दकोश का आकार 45 को पार नहीं करता है। –