Performance Linq到SQL数据检索速度比较
有人告诉我为什么Performance Linq到SQL数据检索速度比较,performance,entity-framework,linq-to-sql,orm,dataset,Performance,Entity Framework,Linq To Sql,Orm,Dataset,有人告诉我为什么linqtosql检索数据这么快吗 我使用linqtosql、EF4、DataSet和MyORM进行了性能测试 Linq to SQL总是更快,请参见下表: Linq to SQL=570毫秒检索50000条记录 数据集=2.100毫秒以检索50000条记录 EF4=1.200毫秒检索50000条记录 MyORM=700毫秒检索50000条记录 我使用SQLServer2005(本地)和一个表进行分析 MyORM由我实现。是一种使用DataReader和Fasterflect
linqtosql
检索数据这么快吗
我使用linqtosql
、EF4
、DataSet
和MyORM
进行了性能测试
Linq to SQL
总是更快,请参见下表:
=570毫秒检索50000条记录Linq to SQL
=2.100毫秒以检索50000条记录数据集
=1.200毫秒检索50000条记录EF4
=700毫秒检索50000条记录MyORM
MyORM
由我实现。是一种使用DataReader
和Fasterflect来填充IList of T
属性来检索数据的简单方法
要获得这种性能,Linq to SQL的策略是什么?Linq to SQL执行了许多技巧。如果您自己的ORM正在使用反射,那么您需要缓存它,但我怀疑区别可能在于您没有缓存序号 e、 g.代替
while(dataReader.Read()) {
...
myNewObj.SomeProperty = dataReader.GetInt32(dataReader.GetOrdinal("SomeField"));
...
}
为每个序号创建一个变量,并在循环中引用它们:
var someFieldIdx = dataReader.GetOrdinal("SomeField");
...
while(dataReader.Read()) {
...
myNewObj.SomeProperty = dataReader.GetInt32(someFieldIdx);
...
}
更好的办法是将它们缓存在一些静态变量上
如果您已经这样做了,您可能希望发布一些实例化对象的ORM代码