我对 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);
编辑:Mark是正确的,将CultureInfo.CreateSpecificCulture("en-US")
从循环外部移动是有帮助的。我之前没有这样做的原因是我使用VS Profiler对这段代码进行了分析,并显示了以下结果: