1

我用 C# 编写了一个应用程序,前几分钟它每秒执行超过 11.000 次操作 (SHA1/AES)。但是当我让它运行几分钟时,它会下降到 6.000 p/sec,并在这个水平上保持几个小时。如果我重新启动应用程序,它将返回到 11.000。任务管理器中的 CPU 使用率显示了类似的模式。

现在我正在寻找一个解释,或者我如何测量操作/秒存在一个巨大的错误(但在那种情况下,任务管理器会讲述一个不同的故事),或者一旦 Windows 注意到它,它就会给我的程序更少的 CPU 时间执行繁重的工作。两者似乎都不太可能,那么重启后它运行得更快的原因是什么?

4

1 回答 1

0

听起来您的时间最终会受到垃圾收集的影响。您是否正在创建大量不是超级短命的对象?如果你的 Visual Studio 版本支持它,你应该对这个场景进行性能分析,并查看你的时间被方法花费在了哪里。

如果 .NET 4.0+,您也可以尝试<gcServer enabled="true" />在您的 Web 或应用程序配置中使用<runtime>节点下启用多线程垃圾收集...意味着它会暂时暂停您的应用程序以不时进行清理,但它可能比连续在后台收集消耗的线程。

于 2013-06-06T21:14:49.737 回答