DateTimeOffset.Parse性能下降?

时间:2015-10-27 09:50:15

标签: c# datetime optimization

我从我的数据库查询并为表中的每一行执行以下功能。我有大约400,000行。

当我使用VS内置工具分析性能时,似乎DateTimeOffset.Parse需要花费大量时间。其他具有不同类型的属性(例如string,int,bool)需要的少得多。

有没有办法优化DateTimeOffset.Parse的性能?

private MyItem GetMyItemData()
    {
        var entity = new MyItem();

        //**** Lots of setting other entity properties****

        entity.ActiveDate =
           string.IsNullOrEmpty(this.DataManager.Reader["ActiveDate"].ToString()) ?
           DateTimeOffset.MinValue : DateTimeOffset.Parse(this.DataManager.Reader["ActiveDate"].ToString());


        return entity;
    }

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您知道传入字符串的格式,TryParseExact可能会为您提供更好的性能。

不同功能的比较:DateTime parsing performance

你应该自己编写一些测试来验证DateTimeOffset。

你这样做了两次,这在大型数据结构中可能代价高昂:

this.DataManager.Reader["ActiveDate"].ToString()

将其改为:

string activedatestr = this.DataManager.Reader["ActiveDate"].ToString();
entity.ActiveDate =
       string.IsNullOrEmpty(activedatestr) ?
       DateTimeOffset.MinValue : DateTimeOffset.**Parse**(activedatestr);