【问题标题】:NHibernate very slow during debuggingNHibernate 在调试期间非常慢
【发布时间】:2011-02-20 16:11:18
【问题描述】:

有没有人偶然发现 NHibernate 在调试时在 Visual Studio 中速度极慢,但在单独运行时表现正常的问题?日志记录被禁用,损失的时间似乎是在执行实际查询时,NHProfiler 显示查询执行得非常快(我假设在 SQL 端),但每个有 10 个查询的会话大约需要 4 秒。我正在使用 SQL Express 服务器。正如我所说,即使我打开完整日志记录并在没有 Visual Studio 的情况下运行我的应用程序,速度也会快很多。

更新。经过数小时的努力,我能够通过简单地将项目类型从 Windows 应用程序切换到控制台应用程序来修复它(虽然实际上它是一个 Windows 服务,但它总是以前使用 Windows 应用程序项目类型)。使 NHibernate 在调试模式下停止可能有什么不同?

【问题讨论】:

  • 也许您正在检查触发延迟加载的内容?
  • 不,我没有使用任何断点,它只是在调试模式下运行。
  • 你怎么知道运行慢的是NHibernate?
  • 通过在 HHinbernate.SQL 日志中观察查询之间的时间。
  • 我认为这不足以证明 NHibernate 正在咀嚼时间而不是您的代码...如何在 NHibernate 中启用完整日志记录并在关键位置向您的应用程序添加日志消息?

标签: nhibernate


【解决方案1】:

我的 WinForms 应用程序也遇到了同样的问题。我尝试了您将其更改为控制台应用程序的建议,并且成功了!不幸的是,拥有控制台窗口是不可接受的。

然后我找到了我认为的潜在罪魁祸首。 ShowSql()(或 show_sql=true)。关闭此功能可使应用程序与从 Visual Studio 外部运行时一样快。我认为这是因为当从 VS 运行时,它会将控制台输出重定向到输出窗口,而这一切都需要时间。在 Visual Studio 之外运行时,没有可写入的控制台输出,因此速度更快。

希望对你也有用

【讨论】:

  • 我总是将 show_sql 设置为 'true',这很有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多