c# - Windows 7 上的 LINQ 性能较慢

标签 c# linq-to-sql windows-7 sql-server-express

我有一个 .net 3.5 应用程序在 Windows XP x86 双核上运行。 我现在已经在 windows 7 x64,四核超线程上安装了应用程序。 该应用程序是一个 gui,它通过 WCF 与 Windows 服务进行通信,该 Windows 服务通过 Linq2Sql 与 SQLExpress 2008 R2 进行通信。 我们还使用温莎城堡进行依赖注入(inject)/IoC

XP 环境中的某个 Linq2Sql 语句大约需要 1,5-2 秒。在 Windows 7 中,这条语句大约需要 5-7 秒。我已经运行了 sql 分析器和资源监视器,应用程序似乎等待了大约 5 秒,然后触发了实际的 sql 查询。所以延迟似乎发生在我的 Datacontext 之下和数据库之前

我尝试了以下方法:

  • 将连接字符串更改为 sql 身份验证
  • 拔掉网线
  • 卸载防病毒程序
  • 禁用 LLMNR
  • 移除网卡上的 IPv6
  • 在代码中添加了未提交读取的事务范围
  • 尝试加锁(多线程环境)
  • 试图将应用程序固定到一个 CPU 上
  • 以管理员身份运行

我的理论是有些东西超时了,但是什么?!?

最佳答案

我认为您将不得不慢慢添加代码以找到问题 - 分而治之。

如果是对数据库的实际请求占用了时间,那么这实际上与您在 Win 7 和 Win XP 上的应用程序无关。当直接针对数据库触发此查询时,该查询需要多快?如果这很快,请向上移动调用堆栈...

Windows 服务有多快?你能向它发出请求,看看它有多快吗?

WCF 层有多快?能不能直接打一下看慢不?那么您找到了罪魁祸首。

接下来,关于您的 UI - 如果您制作一个测试应用程序底部的小测试应用程序,它会很慢吗?如果没有,请继续向上移动。

最后,其中一些可以通过从上到下添加日志语句轻松完成,因此您可以隔离问题,就像@Jan 所建议的那样

关于c# - Windows 7 上的 LINQ 性能较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7485819/

相关文章:

datetime - 批处理文件在 Windows 上减去小时当前时间

php - 如何让 php curl 在我的 apache2.x 开发服务器上运行?

javascript - Visual Studio 2015 文件打开速度很慢?

c# - 即使我在退出菜单时调用了 Cursor.Visible 函数,退出暂停菜单时我的光标仍然可见

c# - DataContext 的生命周期,LinqToSql

Linq ToDictionary 未定义?

c# - Web 应用程序中的 LinqToSql 静态 DataContext

Windows 7 右键单击​​ "Send to"文件上下文菜单

c# - 如何正确设计一个包含双语信息的类

c# - 如何在 IIS 托管的 WCF 应用程序上执行一些初始启动代码?