我从EF内核的SQLite中读取了40,000个小对象/行,耗时18秒,这对于我的UWP应用程序来说太长了。当发生这种情况时,单核上的CPU使用率达到100%,但磁盘读取速度约为1%。
var dataPoints = _db.DataPoints.AsNoTracking().ToArray();
如果没有AsNoTracking()
,所需的时间会更长。
DataPoint
是一个具有一些基本属性的小POCO。我加载的数据总量是4.5MB。
public class DataPointDto
{
[Key]
public ulong Id { get; set; }
[Required]
public DateTimeOffset TimeStamp { get; set; }
[Required]
public bool trueTime { get; set; }
[Required]
public double Value { get; set; }
}
问:有没有更好的方法来加载这么多的对象,或者我被困在这个级别的性能上了?
有趣的事实: x86需要11秒,x64需要18秒。“优化代码”减少了一秒钟。使用Async
将执行时间推到30秒。
https://stackoverflow.com/questions/35854862
复制相似问题