निम्नलिखित सी # कोड 5 मिनट लगते हैं चलाने के लिए:स्ट्रिंग आपरेशन अनुकूलन
int i = 1;
string fraction = "";
while (fraction.Length < 1000000)
{
fraction += i.ToString();
i++;
}
"यह अनुकूलन" इस का कारण बनता है जैसे कि यह 1.5 सेकंड में चलाने के लिए:
int i = 1;
string fraction = "";
while (fraction.Length < 1000000)
{
// concatenating strings is much faster for small strings
string tmp = "";
for (int j = 0; j < 1000; j++)
{
tmp += i.ToString();
i++;
}
fraction += tmp;
}
संपादित करें: कुछ लोगों ने StringBuilder
का उपयोग करने का सुझाव दिया, जो कि एक उत्कृष्ट सुझाव भी है, और यह 0.06s:
int i = 1;
StringBuilder fraction = new StringBuilder();
while (fraction.Length < 1000000)
{
fraction.Append(i);
i++;
}
पर आता है
j
का इष्टतम मूल्य खोजने के लिए चारों ओर बजाना एक और समय है, लेकिन यह गैर-स्पष्ट अनुकूलन वास्तव में क्यों काम करता है? साथ ही, संबंधित विषय पर, मैंने सुना है कि आपने string.Format()
के पक्ष में स्ट्रिंग के साथ +
ऑपरेटर का कभी भी उपयोग नहीं करना चाहिए, क्या यह सच है?
दिलचस्प, मुझे आश्चर्य है कि यह System.Text.StringBuilder का उपयोग करने में कितना समय लगता है, लेकिन मैं आभासी मशीन को आग लगाने के लिए बहुत थक गया हूं, पसंदीदा (यदि यह एक शब्द है) – Kris
इसे जांचें, मैंने पहले से ही एक स्ट्रिंगबिल्डर किया है अब परीक्षण करें। यह मेरे आंतरिक पाश से धीमा है, लेकिन फिर भी मूल कोड से FAR तेज है। –
ध्यान दें कि स्ट्रिंगबिल्डर अपनी तर्क के रूप में वैकल्पिक प्रारंभिक क्षमता लेता है! यह * बहुत * तेज होना चाहिए। –