【问题标题】:Same C# code slower in ASP.Net application versus Winforms App on same machineASP.Net 应用程序中的相同 C# 代码与同一台机器上的 Winforms 应用程序相比更慢
【发布时间】:2010-09-15 15:00:38
【问题描述】:

我们在 C# 中有一个函数,它使用 ICSharpCode SharpZipLib BZip2 解压缩方法来解压缩我们从数据库中获取的一些 XML。我们注意到我们的两个网络服务器(Win 2K 和 Win 2003 Svr)上的一个问题,即这段代码需要很长时间才能执行,并导致这些服务器上的 CPU 利用率达到最大值。我们已经隔离了代码并将其放入 Winforms 应用程序中进行测试,当在同一台机器上的 winforms 应用程序中运行相同的代码时,代码运行得更快。这是使用相同的 SharpZipLib 程序集。

到目前为止,我们不知道为什么代码在 asp.net 进程下运行得这么慢。

有什么建议、想法吗?

提前致谢!

【问题讨论】:

  • 你在预编译asp.net吗?
  • 确保为发布版本配置了 ASP.NET。

标签: asp.net winforms sharpziplib


【解决方案1】:

使用profiler。问题可能出在 decrompession 代码之外的某个地方。你、我和 SO 的其他人不会提供比一个分析器会话更多的信息。

【讨论】:

    【解决方案2】:

    您是否尝试过在像 RedGate ANTS Performance Profiler 这样的 Profiler 中查看代码,看看代码在做什么?

    托管在 ASP.NET 应用程序中的代码在与 WinForm 应用程序完全不同的条件下运行。通过 IIS 工作进程加载时,您可能会遇到 ThreadPool 问题。

    您还可能遇到代码未在 ASP.NET 应用程序中预编译的问题。

    话虽如此,通过 Profiler 运行您的应用程序将为您提供有关事情如何工作的最佳视图。

    【讨论】:

    • 不是预编译; DLL 不会有任何不同,只是稍后会编译。
    • @Jan Jongboom - DLL 不会有任何不同,但在编译发生时会出现一些感知的执行时间差异。
    • 是的,但只有第一个请求。此外,他们正在运行多个网络服务器,所以我猜他们无论如何都是以正确的方式做的:-)
    【解决方案3】:

    确保您正在创建一个 Web 项目并对其进行编译以进行发布构建。 (构建 -> 配置管理器)

    【讨论】:

    • 他正在使用外部库,因此他们的 DEBUG/RELEASE 设置不会介意该代码。
    • @Jan:请记住,调试/发布只是 JIT 应该遵守的一点,但并非总是如此。如果在调试器中运行,默认行为是将 JIT 发布构建为调试(未优化)。也许这里正在发生类似的事情。
    猜你喜欢
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多