C# DateTime stack memory -


1) दिनांकटाइम। अब एक नया दिनांकटाइम उदाहरण देता है। / P>

2) डेटटाइम सब्ट्रैक्ट एक नया समयसीन उदाहरण देता है।

3) दिनांकटाइम है संरचना तो ढेर में मेमोरी में रहती है।

4) जब कोई विधि निकलती है (रिटर्न), तो इसकी स्टैक मेमोरी को पुनः प्राप्त किया जाता है।

इसलिए, निम्नलिखित कोड को मेमोरी बचाते हैं (मानते हुए स्टार्ट टिमिंग विधि मुख्य श्रेणी वाले एक ही कक्षा में है?)

कोड 1:

  स्थिर मुख्य () {बूल शुरू = सच; स्थिर समयक्षेत्र कुल समय = टाइमस्पेन। ज़ोरो; स्थैतिक दिनांकटाइम startTime = दिनांकटाइम.अब; जबकि (शुरू) {// मेरी धारणा: हर बार विधि कहा जाता है, वही मेमोरी // स्टैक में स्टार्टटीमिंग () का पुन: उपयोग किया जाएगा; }} शून्य प्रारंभिकमिंग () {कुल समय = दिनांकटाइम.अब सब्ट्रैक्ट (स्टार्टटाइम); }   

निम्न कोड की तुलना में

कोड 2:

  स्थिर मुख्य () {bool शुरू = सच; टाइमस्पेन कुलटाइम = टाइमस्पेन। ज़ोरो; दिनांकटाइम startTime = दिनांकटाम.अब; जबकि (शुरू) {// मेरी धारणा: हर बार यह एसटीएमटी निष्पादित होता है DateTime.Now // एक नया दिनांकटाइम उदाहरण बना देता है और घटाता है एक टाइम्स बार इंस्टेंस टूटाटाइम = डेटटाइम.Now.Subtract (startTime); }   

}

आप शायद यह पाते हैं कि कोड 1 में स्टार्ट टिमिंग () विधि को जेआईटी कंपाइलर द्वारा लिखित किया गया है, इसलिए दोनों संस्करण एक ही मशीन कोड का उत्पादन करते हैं।

क्या अधिक है, क्योंकि विधि कोई पैरामीटर नहीं लेती है कोई स्टैक नहीं है

और जो आप कर रहे हैं वह समयपूर्व अनुकूलन है ...; -)

Comments