【发布时间】:2015-07-08 16:21:04
【问题描述】:
我在 C# 中创建了一个 Winforms 应用程序。我想知道我的应用的优化/资源需求如何。它拖了多少内存和cpu功率等等。我试图查看 Task manager 并尝试了 Visual Studio's Analyzer 。够了吗?还是有更好的方法?
【问题讨论】:
-
视觉工作室分析器
标签: c# performance memory-management cpu-usage
我在 C# 中创建了一个 Winforms 应用程序。我想知道我的应用的优化/资源需求如何。它拖了多少内存和cpu功率等等。我试图查看 Task manager 并尝试了 Visual Studio's Analyzer 。够了吗?还是有更好的方法?
【问题讨论】:
标签: c# performance memory-management cpu-usage
根据您询问分析器工具的方式,我很确定您不需要任何性能或管理优化。出于这个原因,我想从 Donald Knuth 关于优化的引述开始:
我们应该忘记小的效率,比如大约 97% 的时间: 过早的优化是万恶之源。然而我们不应该通过 在关键的 3% 中增加我们的机会。
因此,如果您无法判断软件的哪个部分变慢 - 您很可能不需要对其进行优化。仅当您知道某些事情很慢时才进行优化,例如单击 ButtonA 或其他任何内容时,您的 UI 会冻结。之后你会想要运行一个性能分析器,对于我需要深入了解我的软件性能的情况,VS-Analyzers 已经足够了。性能优化已得到很好的讨论here。
我所说的关于性能优化的大部分内容都可以应用于优化内存管理。我唯一要明确研究的是内存泄漏,因为 MemoryLeaks 是错误 - 你应该尽量保持你的软件没有错误。在我看来,它比性能瓶颈更难找到内存泄漏,因为您不会真正感觉到它们,而您确实感觉到性能缓慢。跟踪内存泄漏的好工具是dotMemory。使用 WinDbg 追踪一些泄漏可能非常有趣,因为这可以让您深入了解 GarbageCollection(有根对象与无根对象)的工作原理。
【讨论】:
点击Debug -> Start Performance Analysis。快捷键是 Alt+F2。
Analyze -> Profiler -> New Performance Session
【讨论】:
您只能根据要求衡量性能。并且要求应说明特定条件下功能执行时间的 KPI,因为应用程序在连接的用户很少的情况下可能很快,但在正常负载下使用时会非常慢。 其他一切都是浪费时间。
【讨论】: