DateTime.Parse
'un yavaş olmasından dolayı şok olmuştum. Bu kodun çalışması yaklaşık 100 saniye sürüyor; regex sürümünü kullanırsam 100 milisaniye sürer. Burada neler oluyor?DateTime.Parse neden bu kadar yavaş?
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);
Düzenleme: Mark döngü dışında CultureInfo.CreateSpecificCulture("en-US")
yardımcı hareketli, haklı. Daha önce yapmadım nedeni VS Profiler ile bu kodu profilli ve sonuç sonrasında gösterdi ki:
Oooh, Kendimi çok aptalca hissediyorum, aslında CreateSpecificCulture'ı döngü dışı performanstan çıkartıyorum. Daha önce yapmadım çünkü VS Profiler kullandım ve problemin Parse'de olduğunu gösterdi, editte ekran görüntüsüne bakın. – Andrey
Elbette Regex'i kullanmanın hile yaptığına katılıyorum, ancak giriş verisinin geçerli olduğundan ve performansın daha önemli olduğundan% 100 emin olduğum için buna geçiş yapmayı düşündüm. – Andrey