कृपया इस प्रश्न में कोड पढ़ने योग्यता को अनदेखा करें।क्या सी # कंपाइलर इस कोड को अनुकूलित करने के लिए पर्याप्त स्मार्ट है?
प्रदर्शन के संदर्भ में, निम्नलिखित कोड इस तरह लिखा जाना चाहिए:
int maxResults = criteria.MaxResults;
if (maxResults > 0)
{
while (accounts.Count > maxResults)
accounts.RemoveAt(maxResults);
}
या इस तरह:
if (criteria.MaxResults > 0)
{
while (accounts.Count > criteria.MaxResults)
accounts.RemoveAt(criteria.MaxResults);
}
?
संपादित करें: criteria
एक class
है, और MaxResults
एक सरल पूर्णांक संपत्ति है (यानी, public int MaxResults { get { return _maxResults; } }
एक ब्लैक बॉक्स के रूप में सी # संकलक इलाज MaxResults
और यह हर बार का मूल्यांकन करता है या यह स्मार्ट पर्याप्त आंकड़ा है।? बाहर निकलने के लिए मुझे उस संपत्ति के लिए 3 कॉल मिल गई हैं, जिसमें कॉल के बीच उस संपत्ति का कोई संशोधन नहीं हुआ है? क्या होगा यदि MaxResults
एक फ़ील्ड था?
अनुकूलन के नियमों में से एक सटीक है, इसलिए मैंने सहजता से इस कोड को लिखा पहली लिस्टिंग, लेकिन मुझे उत्सुकता है कि इस तरह की चीज मेरे लिए की जा रही है स्वचालित रूप से (फिर, कोड पठनीयता को अनदेखा करें)।
(नोट: मुझे 'माइक्रो-ऑप्टिमाइज़ेशन' तर्क सुनने में कोई दिलचस्पी नहीं है, जो कि मैंने पोस्ट किए गए विशिष्ट मामले में मान्य हो सकता है। मुझे कुछ सिद्धांत पसंद है कि क्या हो रहा है या नहीं ।)
आप बाहर के बारे में चिंता क्यों करते हैं? यदि खाते कुछ सरणी या संग्रह हैं, तो गिनती 0 से कम नहीं होगी। और यदि यह कम नहीं है तो 0 जो परवाह करता है कि मैक्सआरसल्ट 0 से कम है या नहीं? (यह अभी भी लूप नहीं होगा) –
@ मैथ्यू: कृपया तर्क पर लटकाओ मत, क्योंकि (ए) यह मेरे आवेदन के लिए सही ढंग से लिखा गया है, और (बी) यह नहीं है कि मैं इस प्रश्न में क्या पूछ रहा हूं। –
खाते। टेक (maxResults) –