繁体   English   中英

Performance Counters可以跟踪字符串识别符花费的时间吗?

[英]Can Performance Counters track time taken along with a string idenitifer?

我需要记录任务花费的时间,建议使用Windows性能计数器。

我需要记录解决给定MathProblem所花费的时间。 Solve方法的第一行将启动StopWatch,最后一行将停止它。

当我记录解决问题所花费的时间时,我需要记录时间以及ProblemId(字符串)。

性能计数器可以使用这样的记录数据吗? perfmon图会与一个idenitifer一起绘制时间吗? 因此,当我单击或将鼠标悬停在图形点上时,它将显示ProblemID?

提前致谢

public class MathProblem
{
    public string ProblemID;

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

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

否,如果您要按问题ID分开计数器,则系统性能计数器在这种情况下不起作用。 确实,实例类别可以为每个实例跟踪单独的计数器,而显示可以显示每个类别和_Total的计数器(这是您在代码中创建的汇总类别,并确保也将所有单个实例也添加到_Total中) ,此基础架构是为相当稳定的实例设计的,最易变的示例是流程。 如果您的ProblemID频繁出现并消失(即,该ID非常不稳定,每小时更改次数超过几次),则在perfmon基础架构下跟踪这种波动性将无法正常工作。 客户端对实例名称进行快照,然后在实例名称空间中查找更改,因此,如果名称易变,则所有客户端将基本不跟踪任何内容:将跟踪捕获快照时碰巧存在的一些ProblemId,那么就不多了,因为快照实例将消失并且不会捕获任何新实例。

如果这看起来像是一种简单的方法,请原谅我,但是对于它的价值(并根据Remus的信息,perfmon不会满足您的要求),我一直通过将结果写入CSV文件来解决此类问题。 然后可以将其直接导入Excel,Excel将以最合适的方式对数据进行分析和图形化。 当然,任何其他电子表格程序都可以使用。

这样,您无需创建代码就可以编写代码,而无需编写代码即可获得复杂的分析功能。 除非您想在Excel中编写一些VBA来帮助处理数据。

我可能误解了您的要求,但是您可以将结果附加到有效的日志文件(CSV格式)中,然后在每次运行程序时简单地添加到日志文件中,这与创建性能计数器的效果差不多数据点。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM