有人告诉我为什么Linq-to-SQL检索数据的速度这么快?
我用Linq-to-SQL、EF4、DataSet和MyORM进行了性能测试。
Linq-to-SQL总是更快,见下表:
Linq-to-SQL = 570毫秒检索50000条记录DataSet = 2.100毫秒检索50000条记录EF4 = 1.200毫秒检索50000 recordsMyORM = 700毫秒检索50000条记录我使用Server 2005 (本地)和一个表进行分析。
MyORM是由我实现的。是一种使用DataReader和Fasterflect检索数据以填充IList of T属性的简单方法。
Linq-to-SQL拥有这种性能的策略是什么?
发布于 2012-02-12 04:53:06
LINQ执行许多技巧。如果您自己的ORM使用反射,那么您将需要缓存它,但我怀疑不同之处可能是您没有缓存序数。
例如,代替
while(dataReader.Read()) {
...
myNewObj.SomeProperty = dataReader.GetInt32(dataReader.GetOrdinal("SomeField"));
...
}为每个序号创建一个变量,并在循环中引用它们:
var someFieldIdx = dataReader.GetOrdinal("SomeField");
...
while(dataReader.Read()) {
...
myNewObj.SomeProperty = dataReader.GetInt32(someFieldIdx);
...
}更好的方法是将它们缓存在一些静态变量上。
如果您已经这样做了,您可能希望发布一些实例化对象的ORM代码。
https://stackoverflow.com/questions/9200114
复制相似问题