通过从数据库调用中删除对象映射来大大提高速度

时间:2014-10-26 05:53:58

标签: c# linq entity-framework

您可以在以下位置查看我的代码:https://gist.github.com/anonymous/da0d2b99e5adf7db5e08

我在ASP.NET MVC项目中使用Entity Framework 6 / LINQ和C#。数据库是MySQL。

当我将对象映射从数据库调用中分离出来时,它会将速度提高2倍以上(1000次迭代时为4000ms,1000次迭代时为1600ms)。我尝试过切换订单并预先缓存数据库调用(我不确定它们是否缓存,但我尝试过),结果没有变化。测试用例输出的对象列表(returnList1和returnList2)似乎相同。

A)我是否弄乱了我的测试用例或这些结果是否准确? B)如果我没有弄乱我的测试用例,为什么不测试#1只是编译成类似于测试#2的代码,测试1对测试2有什么好处?

1 个答案:

答案 0 :(得分:0)

我正在回答我的问题,因为我也问了其他地方的问题,并收到了有用的答案。这可能是由于Cold vs. Warm Query Execution, as you can see on msdn.

此外,建议使用插件观看数据库查询的评论很有意思,但是只是从Linq To Entities查询中删除toList,格式化方式与我的问题相同,显示了相关的原始mysql查询。