如何找到 C# 桌面应用程序的性能瓶颈?

Posted

技术标签:

【中文标题】如何找到 C# 桌面应用程序的性能瓶颈?【英文标题】:How to find the performance bottleneck in C# desktop application? 【发布时间】:2012-12-04 08:22:44 【问题描述】:

我们开发了一个加载在服务器中的 Windows 桌面应用程序。该应用程序通常通过访问服务器从客户端启动。服务器将位于不同的城市,客户端将从不同的城市访问它。在过去的几周里,该应用程序开始运行缓慢。例如,单击菜单启动 exe 后,启动 exe 大约需要 30 秒(exe 驻留在服务器中)。

该应用程序没有任何主要的数据库活动,并且大多数活动是发生在客户端计算机中的页面处理。我还检查了 Windows 任务管理器,在运行此应用程序时,任何应用程序或 CPU 利用率都没有主要内存使用情况。

如果您建议我采取一些步骤来确定此问题的根本原因以及可以在这种情况下使用的一些分析工具,将会很有帮助。

【问题讨论】:

所以服务器不在局域网中,您的应用程序通过互联网连接到服务器?客户端使用 *** 吗? 许多版本的 Visual Studio 都附带一个性能分析器,可让您对应用程序进行采样并确定哪种方法花费的时间最长。如果您有合适的版本,那么分析 -> 启动性能向导将为您提供这些工具。 我会使用 Visual Studio 的内置分析器。它允许您测量一个方法需要多长时间以及它被调用了多少次。对于内存分析,我使用了 CLR Profiler,它可以让您查看应用程序占用了多少内存,哪些对象是由哪些方法创建的。 ***.com/a/2474118/23771 【参考方案1】:

您需要一个性能分析器,它可以准确地确定程序中每个函数(或行)所花费的时间。

有几种免费和商业产品。我用过Red Gate Performance Profiler,它对这类事情非常方便。

关于最佳性能分析器的专题: Best .NET memory and performance profiler?

【讨论】:

以上是关于如何找到 C# 桌面应用程序的性能瓶颈?的主要内容,如果未能解决你的问题,请参考以下文章

怎样查出SQLServer的性能瓶颈

怎样查出SQLServer的性能瓶颈

突破性能瓶颈!ElasticSearch百亿级数据检索优化案例

怎样查出SQLServer的性能瓶颈

怎样查出SQLServer的性能瓶颈

性能-如何根据线程和进程找到性能瓶颈或者问题点