2

我们有一个客户端/服务器应用程序,我想对它们进行分析以创建指标,例如“平均登录时间为 xx 毫秒,xxx 为最大值,x 为最小值,自 yyyy 以来总共有 xx 次登录”等等。

我知道 Equatec 和 ANTS 分析器(我都非常喜欢)。但我认为他们不提供我需要的功能。

当然,我可以自己编写必要的函数,但我认为 ANTS 或 Equatec 自己可以很好地做到这一点,必须有某种方法来使用该功能。

我需要的:

  • 尽可能多地收集有关函数调用的数据,同时仍保持合理的性能

  • 缩放就像在(取消)选择我不想监视的代码路径时一样好

  • 将所有收集的数据保存在数据库中,可以是本地数据库,也可以是远程 SQL 数据库

  • 如果该工具可以自己创建像 ANTS 这样的图表,那会很酷,但原始数据就足够了

  • 代码是用 C# 3.5(服务器和客户端<->服务器通信)和 C++(客户端 GUI)编写的。也可以监控 C++ 代码(C# 嵌入为 COM 对象),但目前,监控 C# 就足够了

这不一定是免费的,但必须进行测试。

4

2 回答 2

1

Profiler 更加以代码/功能为中心,并且对性能有很大的影响。此外,不可能将带有您的代码的分析器推出给您的用户。
我认为您应该考虑为您的代码使用像 log4net 这样的日志记录框架,然后配置日志记录以将结果保存到可用于分析性能数据的数据库中。

于 2012-11-22T09:51:05.727 回答
0

以下是我现在能想到的几个选项:

  1. 编写自己的代码,专门为要分析的函数计时(显然是最简单的选项)。
  2. 使用性能计数器 ( System.Diagnostics.PerformanceCounter )。
  3. 使用.NET Profiling API滚动您自己的分析器
  4. 使用性能工具包中称为Xperf的低级内置 OS 分析器。

编辑:我怎么能忘记这个小宝石!

MiniProfiler可以像这样包裹你的代码:

var profiler = MiniProfiler.Current; // it's ok if this is null
using (profiler.Step("Doing complex stuff")){
    using (profiler.Step("Step A"))
    { // something more interesting here
        Thread.Sleep(100);
    }

    using (profiler.Step("Step B"))
    { // and here
        Thread.Sleep(250);
    }
}
于 2012-11-24T09:55:14.180 回答