私はその遅さにショックを受けました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でプロファイリングしたところ、次の結果が表示されたためです。