C# 性能计数器能否跟踪与字符串标识符一起使用的时间?

C# 性能计数器能否跟踪与字符串标识符一起使用的时间?,c#,performancecounter,C#,Performancecounter,我需要记录任务所花费的时间,并且有人建议我使用windows性能计数器 我需要记录解决给定数学问题所花费的时间。第一行将启动秒表,最后一行将停止秒表 当我记录解决问题所花费的时间时,我需要将时间与问题ID一起记录为字符串 性能计数器可以像这样使用记录数据吗?perfmon图是否会与idenitifer一起绘制时间?所以当我点击或悬停在图形点上时,它会显示问题ID 提前谢谢 public class MathProblem { public string ProblemID; p

我需要记录任务所花费的时间,并且有人建议我使用windows性能计数器

我需要记录解决给定数学问题所花费的时间。第一行将启动秒表,最后一行将停止秒表

当我记录解决问题所花费的时间时,我需要将时间与问题ID一起记录为字符串

性能计数器可以像这样使用记录数据吗?perfmon图是否会与idenitifer一起绘制时间?所以当我点击或悬停在图形点上时,它会显示问题ID

提前谢谢

public class MathProblem
{
    public string ProblemID;

    public void Solve()
    {
        StopWatch sw = StopWatch.StartNew();

        sw.Stop();
        //Log to performance counter with ProblemID
    }
}

不,,如果要按问题ID分离计数器,则系统性能计数器在这种情况下不起作用。而实例类别可以跟踪每个实例的单独计数器,并且显示器可以显示每个类别的计数器以及在代码中创建的聚合类别_Total的计数器,并确保添加所有计数器从单个实例到_Total,这个基础设施是为相当稳定的实例而设计的,最不稳定的示例是流程。如果您的问题ID经常出现并消失,即ID非常不稳定,那么在perfmon基础设施下跟踪这种不稳定的情况每小时更改几次以上是行不通的。客户端对实例名称进行快照,然后在该实例名称空间中查找更改,因此,如果名称不稳定,所有客户端基本上不会跟踪任何内容:将跟踪快照捕获时碰巧存在的某个问题ID,因为快照实例将消失,没有新实例被捕获,所以就没有其他问题了。

如果这似乎是一种过于简单的方法,请原谅,但是,根据Remus的信息,perfmon不会做您想做的事情,我总是通过将结果写入文件来解决这类问题。然后可以将其直接导入Excel,Excel将以最合适的方式分析和绘制数据。当然,任何其他电子表格程序都可以

通过这种方式,您可以获得复杂的分析功能,而无需编写代码,只需创建一个文本文件;除非您想在Excel中编写一些VBA来帮助处理数据

我可能误解了您的要求,但您可以将结果附加到CSV格式的日志文件中,并在每次运行程序时简单地添加到该文件中,这与创建性能计数器数据点的效果大致相同

如果您想变得更复杂,当然可以使用更复杂的解决方案将结果直接注入Excel工作表