(यह एक सामान्य काल्पनिक सवाल माना जाता था, मुझे शिकायत है कि नेट एक सुअर था और कारणों के लिए भीख माँग रहा है। यह वास्तव में मेरे विशिष्ट अनुप्रयोग के बारे में एक सवाल होने के लिए नहीं था।).NET इतना CPU का उपयोग क्यों करता है, क्या यह एक समस्या है?
वर्तमान में मैं कर रहा हूँ सी # में कुछ पुराने सी ++ कोड को फिर से लिखना। हम सभी विरासत अनुप्रयोगों पर पोर्टिंग कर रहे हैं। मेरे पास सी ++ एप्लिकेशन हैं जो MAX 3% CPU लेते हैं। ज्यादातर वे किसी का उपयोग नहीं करते हैं। मैं फिर कोड लेता हूं, कॉपी और पेस्ट करता हूं, फिर सी # सिंटैक्स और .NET पुस्तकालयों में सुधार करता हूं, और बीएएम! 50% सीपीयू। इसके लिए क्या कारण है? मैंने पहले सोचा था कि यह जेआईटी था, लेकिन प्रत्येक कोड पथ का अभ्यास करने के बाद भी, और पूरी बात जेआईटी एड, एक ही मुद्दा रही है।
मैंने भी बड़ी स्मृति वृद्धि देखी है। 9 एमबी पूर्ण लोड चलाने वाले ऐप्स अब 10 एमबी से शुरू होते हैं और 50 एमबी पर चलते हैं। मुझे लगता है कि हार्डवेयर सस्ता है, लेकिन मैं समझना चाहता हूं कि इसका क्या कारण है। क्या यह अलार्म का कारण है, या .NET बस इतना सुअर है?
अद्यतन 1 उत्तर स्कीट को
मैं के साथ सी # परिचित हूँ। मैं चीजों को लिंक में बदलता हूं, और इसी तरह। मैं आम तौर पर कोड लेता हूं और लाइनों की संख्या को कम करता हूं, और इसी तरह। क्या आप कुछ और उदाहरण दे सकते हैं कि सीई ++ व्यक्ति जो .NET में गलत करता है?
अद्यतन 2
यह एक सामान्य प्रश्न माना जाता था, लेकिन इस मुद्दे को वह विशेष अनुप्रयोग इस प्रकार है।
इसमें एक धागा है जो एक विरोधाभासी डीबी से डेटा प्राप्त करने के लिए उपयोग करता है और ओडीबीसी चालक है। इसके बाद यह एसक्यूएल डीबी में बदलने और इसे पोस्ट करने के लिए लिंक का उपयोग करता है। मैंने इसे एएनटीएस प्रोफाइलर के माध्यम से चलाया है, और ऐसा लगता है कि डेटा सेट भरने में सबसे अधिक समय लगता है। लिंक पोस्टिंग द्वारा पीछा किया। मुझे पता है कि मेरे कुछ क्षेत्र प्रतिबिंब उपयोग हैं, लेकिन मुझे नहीं पता कि मुझे यह करने के लिए क्या करना है। मैं अपनी स्ट्रिंग को स्ट्रिंग बिल्डर्स में बदलने की योजना बना रहा हूं। क्या इन दोनों के बीच कोई अंतर है?
(int)datarow["Index"]
और
ConvertTo.Int32(datarow["Index"])
मैं प्रारूप तार करने के लिए सभी स्ट्रिंग संयोजन बदल दिया है। वह सिर पर कम नहीं किया था। क्या कोई डेटा रीडर बनाम डेटा एडाप्टर और डेटासेट के बीच अंतर जानता है?
सैद्धांतिक उदाहरणों की आवश्यकता के बजाय, आप यह देखने के लिए बेहतर कर सकते हैं कि आपका एप्लिकेशन CPU क्यों खर्च कर रहा है, यह देखने के लिए बेहतर हो सकता है। – ChrisW
लगता है जैसे यह ओडीबीसी के साथ बातचीत हो सकती है। क्या कोई "मूल" .NET पैराडाक्स ड्राइवर उपलब्ध है? –
50% सीपीयू कितनी देर तक? किस काम के लिए? सीपीयू-गहन मिनी-बेंचमार्क में मैंने अध्ययन किया है, सी ++ सी # से तेज था, लेकिन ज्यादा नहीं। प्रत्येक मामले में मैंने उच्चतम थ्रूपुट प्राप्त करने के लिए सीपीयू को संतृप्त किया। – Cheeso