performance - 性能计数器性能计数器的性能

  显示原文与译文双语对照的内容
77 0

当考虑使用性能计数器作为我公司的.NET 站点时,我想知道使用它们的开销是多大。

我想让我的网站不断更新它是计数器,还是我只是在测量时才做到?

时间: 原作者:

59 2

在更新过程中可以忽略性能影响。 微软的意图是你总是写性能计数器。 监控( 或者捕获)的性能计数器会导致性能下降。 所以,只有当你使用perfmon来捕获数据时。

实际上,性能计数器对象只有在度量时才会对它的产生影响。"

142 3

设置性能计数器的开销通常不够高,无法考虑( 设置共享内存区域和一些. NET 对象以及CLR开销,因为CLR实际上为你进行管理。) 。 这里我引用的类类似PerformanceCounter类。

注册perfromance计数器的开销可以能很慢,但通常不是一个关注的问题,因为你希望在安装时发生。 你做的任何复制都会是 dwarfed 。 一般情况下,在运行时不需要做什么。 这里我指的是 PerformanceCounterInstaller 。

更新性能计数器的开销通常归结为在共享内存上执行连锁操作的开销。 这比普通内存访问慢,但它是处理器原始的( 这就是在整个内存子系统中实现原子操作的方式,包括缓存) 。 一般而言,这种成本并不高。 可以能是 10倍的正常内存操作,可以能更糟糕的是更新和跨线程和 CPU的争用。 但是考虑到这一点,对于与原子更新的交叉进程通信,不可以能做任何更好的事情。 这里我引用 PerformanceCounter.Increment 和类似的方法。

读取性能计数器的开销通常是从共享内存读取的。 ,你想在一个合理的周期( 就像其他取样一样) 采样,但是想 PerfMon PerfMon keep ( 思考秒而不是毫秒),你不会出现任何问题。

最后,有一个吸引人的体验: 性能计数器非常轻量级,可以在 Windows 中到处使用,从内核到驱动程序到用户应用程序。 Microsoft在内部依赖于它们。

建议:性能计数器的真正问题是理解( 这是中度的)的学习曲线和对正确事物的度量。

原作者:
...