【问题标题】:Linq to SQL Performance in .NET 4.NET 4 中的 Linq to SQL 性能
【发布时间】:2010-06-23 16:58:25
【问题描述】:

我有一个在 .NET 3.5 和 .NET 4 上运行的简单查询,如下所示:

var x = from o in Orders
        join ot in OrderTypes on o.OrderTypeId equals ot.OrderTypeId
        where or.OrderTypeName.Contains("sales")
        select o;
var y = x.ToList();

相同的代码在 .NET 3.5 和 .NET 4 上运行,连接到同一个数据库,两个 dbml 文件均在受尊重的 .NET 版本中生成。两者都返回正确数量的记录(大约 350 条记录)。数据库表索引正确。两者分别在 VS 2008 和 VS 2010 中以调试模式运行。当我直接在 SQL Mgmt Studio 中运行 T-SQL 中的查询时,它运行得很快,几乎是即时的。所以这绝对不是 DB 对象的问题。

问题是:在 .NET 3.5 中运行的运行速度很快(应该是,不到 1 秒,我没有精确的测量,但几乎是即时的)。但是在 .NET 4 中运行的需要超过 5 秒。

有人知道这是为什么吗?还是……帮忙?

【问题讨论】:

  • 当您在发布模式下运行此程序时,在 Visual Studio 之外,您是否看到相同的性能差异?
  • 我将首先在Release 模式和开发环境之外运行这两个可执行文件。如果你在性能上有如此大的差异,事情就会变得令人担忧:-)
  • 我同意,这可能是因为 VStudio 2010 比 VStudio 2008 慢,并且您正在运行附加调试器。
  • 我没有尝试在 VS 2010 中以发布模式运行 - 我会尝试一下。在 2008 年,我没有看到调试模式和发布模式之间有任何明显的区别。我会在 2010 年尝试时更新。
  • 好的,我已经尝试了几件事: 1. 将 web.config 设置为在 debug mode = false 下运行(没有区别) 2. 在 Release 模式下编译整个解决方案并重新运行(大不同 - 它与 .NET 3.5 一样快)。所以,我猜在某种程度上,速度慢只是在调试编译中。但是有人愿意解释为什么在 .NET 3.5 中没有这样的行为?

标签: c# linq performance linq-to-sql


【解决方案1】:

您可以尝试在 VS 2010 中禁用 IntelliTrace。

【讨论】:

  • 是 Intellitrace,是的!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
相关资源
最近更新 更多