我在DateTime.Parse
如何慢是震驚。 此代碼需要大約100秒才能運行;如果我使用正則表達式版本,它需要100毫秒。 這是怎麼回事?爲什麼DateTime.Parse這麼慢?
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")
幫助。之前我沒有這樣做的原因是,我評測的這款代碼VS探查,它顯示以下結果:
哦,我覺得自己很愚蠢的,實際移動'CreateSpecificCulture'圈外固定性能。之前我沒有這樣做的原因是因爲我使用的VS探查,它表明,問題是在'Parse',請參閱編輯截圖。 – Andrey
我當然同意使用正則表達式在這裏有點作弊,但我考慮切換到它,因爲我100%確定輸入數據是有效的,性能更重要。 – Andrey