Windows会限制CPU时间吗?

时间:2013-06-06 21:11:39

标签: c# windows performance cpu-usage slice

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

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

1 个答案:

答案 0 :(得分:0)

听起来好像你的时间最终会受到垃圾收集的影响。你创造了大量不是短暂的物品吗?如果您的Visual Studio版本支持它,您应该对此方案进行性能配置文件,并查看方法花费的时间。

如果是.NET 4.0+,您还可以尝试在<gcServer enabled="true" />节点下的Web或App配置中使用<runtime>来启用多线程垃圾收集......意味着它暂时将您的应用暂停到偶尔清理,但它可能比在后台收集的连续消费线程更好。