2011-06-06 9 views
5

मैं सी #/.NET अनुप्रयोग को बढ़ाने के तरीकों की तलाश में हूं। जो मुझे अब तक मिला है वहसी #/.NET अनुप्रयोग के निष्पादन को तेज करना

  1. ngen का उपयोग करें।
  2. सावधान when using as operator
  3. प्रतिबिंब API का उपयोग करते समय सावधान। Assembly.LoadFrom() के साथ डीएल लोड करने में काफी समय लगता है।

आप सी # /। नेट कार्यक्रम से उत्कृष्ट प्रदर्शन प्राप्त करने के लिए और क्या उपकरण/सुझावों/अच्छी प्रथाओं है।

+7

यह बहुत व्यापक और उलझा रहा है। सबसे पहले अपना कोड काम कर लें, फिर ठोस प्रदर्शन समस्याओं को हल करें। –

+0

एमएसडीएन आलेख [प्रदर्शन (सी # और विजुअल बेसिक)] (http://msdn.microsoft.com/en-us/library/ms173196) से शुरू करने का प्रयास करें। इसके अलावा रिको मारियानी कहते हैं कि माप, माप, माप –

उत्तर

5

पहले ngen से सावधान रहें। यह वास्तव में प्रदर्शन को नुकसान पहुंचा सकता है। अधिक जानकारी के लिए जेफ रिचटर की पुस्तक "सीएलआर के माध्यम से सी #, तीसरा संस्करण" देखें।

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

समस्याओं मैंने देखा है में से अधिकांश आमतौर पर डेवलपर या समग्र वास्तुकला बल्कि नेट फ्रेमवर्क से कारण होते हैं। उदाहरण के लिए एक Asp.Net वेब एप्लिकेशन जिसके लिए होम पेज लोड करने के लिए डेटाबेस में 30+ कॉल की आवश्यकता होती है।

1

जब संभव हो तो महंगे कार्यों को याद रखें।

public static class Expensive 
{ 
    private static readonly ConcurrentDictionary<int, int> _map = 
     new ConcurrentDictionary<int, int>(); 

    public static int Calculate(int n) 
    { 
     return _map.AddOrUpdate(n, Add, (key, value) => value); 
    } 

    static int Add(int key) 
    { 
     return 0; 
    } 
} 
+1

हालांकि, इसे अंधाधुंध मत करो। – SLaks

1

आप ngen उपयोग नहीं करना चाहिए जब तक आप ठीक पता है कि सीपीयू वातावरण अपने DLLs पर तैनात किया जा रहे हैं। और यह सुनिश्चित करने के लिए पता है कि वे अन्य CPU प्रकारों पर तैनात नहीं किए जाएंगे। यह बुरा है अगर आप x86 देशी संकलित करते हैं और x64 पर तैनाती करते हैं। आप जेआईटी कर सकते थे सभी अनुकूलन खो देंगे।

प्रदर्शन इस बात पर निर्भर करता है कि आपका एप्लिकेशन क्या करने का प्रयास कर रहा है। दिशानिर्देश बहुत अलग होंगे अगर यह डेस्कटॉप संगीत प्लेयर ऐप बनाम एक डीबी संचालित वेब ऐप था। लेकिन तुम मुक्केबाजी/unboxing, प्रतिबिंब के बहुत से बचने के लिए, एक बहुत बड़ी Xml दस्तावेज़ को लोड, और बहु ​​सूत्रण करने के लिए इनबिल्ट CLR ThreadPool वर्ग का उपयोग करने के लिए XmlDocument का उपयोग कर विचार करना चाहिए, IDisposable लागू करने के लिए कुछ नाम याद ..

1

मैं एक बार कई दिन बिताए जब वास्तव में मुझे पता चला कि मेरी CompareTo कार्यान्वयन में अड़चन जो हज़ारों बार बुलाया जा रहा रहा था आवेदन तेजी लाने के लिए, कोड को फिर से लिखने।

  • उपयोग aprofiler
  • (आपके मामले में) कोई फर्क नहीं पड़ता कि अनुकूलन करने में समय बर्बाद न करें।
  • पता लगाएं कि क्या करता है।
संबंधित मुद्दे