C# 使用哪种性能计数器类型?

C# 使用哪种性能计数器类型?,c#,performancecounter,C#,Performancecounter,我们确实在应用程序中广泛使用zip压缩。我需要使用应用程序内部压缩/解压缩的真实数据(我们执行的合成测试似乎不太精确)来测量不同zip压缩器的性能 有一种实用的方法可以按需进行压缩/解压缩,因此我需要测量它的性能并获得一些平均值。此平均值基本上是平均速率(压缩的总字节数除以花费的总时间) 我玩过不同类型的性能计数器,结果让我有点困惑 哪种类型的计数器最适合我的情况?是计数秒64还是平均计数64?同样,当系统空闲时,我不需要更改计数器值;平均值应该保持不变。系统空闲时经过的时间也不算在内。我不相信

我们确实在应用程序中广泛使用zip压缩。我需要使用应用程序内部压缩/解压缩的真实数据(我们执行的合成测试似乎不太精确)来测量不同zip压缩器的性能

有一种实用的方法可以按需进行压缩/解压缩,因此我需要测量它的性能并获得一些平均值。此平均值基本上是平均速率(压缩的总字节数除以花费的总时间)

我玩过不同类型的性能计数器,结果让我有点困惑


哪种类型的计数器最适合我的情况?是计数秒64还是平均计数64?同样,当系统空闲时,我不需要更改计数器值;平均值应该保持不变。系统空闲时经过的时间也不算在内。

我不相信您会直接找到一个性能计数器来指示任何给定压缩机/减压器的总体分数

正如belisarius所评论的,你至少有两个独立变量对分数有贡献:

  • 压缩比
  • 花费的时间
可能还有其他原因:

  • 输入文件的大小
  • 压缩算法是否适合给定的输入数据(例如,某些压缩技术的工作效果更好,取决于输入文件是否为文本、图形、视频等)
等等。如果我是你,我会用自己的性能计数器,甚至多个计数器来测量每个自变量的原始值

然后,使用Performance Monitor Data Collector收集这些计数器的日志,并在稍后对其进行处理,您可以根据您的分析对维度进行加权(找出更快的压缩或更高的压缩比是否更重要,以及丢弃边缘案例等)


另外,下面的codeproject.com文章对不同的计数器进行了很好的分类,并给出了它们测量结果的有用示例

压缩的总字节数除以花费的总时间似乎不是一种敏感的方法。您正在混合两个维度,并以一个不具有代表性的数字结束。如果该方法非常快,但不压缩任何内容,该怎么办?我同意,我必须单独测量压缩比(特定拉链压缩数据的程度)(它还应测量为应用程序执行的不同操作的平均值)。但在这种特殊情况下,您会建议如何计算压缩率呢?