我对速度如此之慢感到震惊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")
循环外有帮助。我之前没有这样做的原因是我使用 VS Profiler 分析了这段代码,它显示了以下结果: