我从我的数据库查询并为表中的每一行执行以下功能。我有大约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;
}
谢谢!
答案 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);