首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq-to-SQL数据检索速度比较

Linq-to-SQL数据检索速度比较
EN

Stack Overflow用户
提问于 2012-02-08 19:31:26
回答 1查看 393关注 0票数 4

有人告诉我为什么Linq-to-SQL检索数据的速度这么快?

我用Linq-to-SQLEF4DataSetMyORM进行了性能测试。

Linq-to-SQL总是更快,见下表:

  • Linq-to-SQL = 570毫秒检索50000条记录
  • DataSet = 2.100毫秒检索50000条记录
  • EF4 = 1.200毫秒检索50000 records
  • MyORM = 700毫秒检索50000条记录

我使用Server 2005 (本地)和一个表进行分析。

MyORM是由我实现的。是一种使用DataReader和Fasterflect检索数据以填充IList of T属性的简单方法。

Linq-to-SQL拥有这种性能的策略是什么?

EN

回答 1

Stack Overflow用户

发布于 2012-02-12 04:53:06

LINQ执行许多技巧。如果您自己的ORM使用反射,那么您将需要缓存它,但我怀疑不同之处可能是您没有缓存序数。

例如,代替

代码语言:javascript
复制
while(dataReader.Read()) {
    ...
    myNewObj.SomeProperty = dataReader.GetInt32(dataReader.GetOrdinal("SomeField"));
    ...
}

为每个序号创建一个变量,并在循环中引用它们:

代码语言:javascript
复制
var someFieldIdx = dataReader.GetOrdinal("SomeField");
...
while(dataReader.Read()) {
    ...    
    myNewObj.SomeProperty = dataReader.GetInt32(someFieldIdx);
    ...
}

更好的方法是将它们缓存在一些静态变量上。

如果您已经这样做了,您可能希望发布一些实例化对象的ORM代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9200114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档