मुझे आश्चर्य हुआ कि DateTime.Parse
कितना धीमा है। इस कोड को चलाने के लिए लगभग 100 सेकंड लगते हैं; अगर मैं रेगेक्स संस्करण का उपयोग करता हूं तो इसमें 100 मिलीसेकंड लगते हैं। यहां क्या हो रहा है?डेटटाइम क्यों है। पर्स इतनी धीमी है?
Stopwatch sw = new Stopwatch();
sw.Start();
var re = new Regex(@"(\d\d)/(\d\d)/(\d\d\d\d) (\d\d):(\d\d):(\d\d)", RegexOptions.Compiled);
for (int i = 0; i < 100000; i++)
{
//var m = re.Match("08/01/2012 23:10:12");
DateTime.Parse("08/01/2012 23:10:12", CultureInfo.CreateSpecificCulture("en-US"));
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
संपादित: मार्क सही है, चलती पाश बाहर CultureInfo.CreateSpecificCulture("en-US")
में मदद की। कारण मैं इसे पहले नहीं किया है कि मैं वी.एस. प्रोफाइलर के साथ इस कोड प्रोफाइल और यह परिणाम के बाद पता चला है:
ओह, मैं बहुत बेवकूफ महसूस करता हूं, वास्तव में लूप निश्चित प्रदर्शन से 'CreateSpecificCulture' को स्थानांतरित करता हूं। कारण मैंने पहले ऐसा नहीं किया क्योंकि मैंने वीएस प्रोफाइलर का उपयोग किया और यह दिखाया कि समस्या 'पारसे' में है, संपादन में स्क्रीनशॉट देखें। – Andrey
मैं निश्चित रूप से सहमत हूं कि रेगेक्स का उपयोग करना यहां धोखाधड़ी का प्रकार है, लेकिन मैंने इसे स्विच करने पर विचार किया क्योंकि मुझे 100% यकीन था कि इनपुट डेटा मान्य है और प्रदर्शन अधिक महत्वपूर्ण था। – Andrey