CounterSample中的时间字段是什么意思?

时间:2012-04-03 15:22:41

标签: c# system.diagnostics

我有PerformanceCounter的实例,我在其上调用NextSample()并获得CounterSample。其中有几个与时间相关的字段:CounterFrequency,SystemFrequency,CounterTimeStamp,Timestamp和TimeStamp100nSec。

MSDN page for CounterSample仅说“获取原始计数器频率”和类似的无用描述,以及打印该值而不进行解释的示例。

  • 这些意味着什么?
  • 他们是什么单位?我尝试了所有DateTime.FromX()函数,但没有一个产生合理的结果。

1 个答案:

答案 0 :(得分:6)

(sample2.Timestamp - sample1.Timestamp) / sample2.SystemFrequency = elapsed seconds

(sample2.TimeStamp100nSec - sample1.TimeStamp100nSec) / 10000000 = elapsed seconds

当我分析LOGMAN.EXE如何读取perf计数器并将它们存储在SQL数据库中时,我能够对此进行逆向工程。 CounterSample类(来自各种反汇编)包装了这个C结构

PDH_RAW_COUNTER

在此C结构中,SecondValue具有TimeStamp或TimeStamp100nSec depending on the counter type。当它被.NET CounterSample结构包装时,您可以通过属性获得。