C#/.NET探查器应该具备哪些功能?
这可能是一个边缘广告,更不用说主观,但问题是诚实的。在过去的两个月里,我一直在为.NET开发一个新的开源分析器,名为SlimTune profiler() 这是一项相对较新的工作,但当我查看可用的分析器的范围时,我并没有印象深刻。我已经在现有产品的基础上做了一些初步的工作,但我觉得这是一个很好的提问的地方:你到底想从剖析器中得到什么 我来自实时图形和游戏,所以对我来说,尽快开发一个剖析器是很重要的。否则,游戏将变得不可玩,分析一个不可玩的慢游戏往往不是很有启发性。因此,我愿意牺牲一些准确性。我甚至不在乎例外情况。但我不太熟悉其他类型应用程序的开发人员感兴趣的内容。你有什么成功或失败的特点吗?现有的工具落在哪里C#/.NET探查器应该具备哪些功能?,c#,.net,performance,profiler,C#,.net,Performance,Profiler,这可能是一个边缘广告,更不用说主观,但问题是诚实的。在过去的两个月里,我一直在为.NET开发一个新的开源分析器,名为SlimTune profiler() 这是一项相对较新的工作,但当我查看可用的分析器的范围时,我并没有印象深刻。我已经在现有产品的基础上做了一些初步的工作,但我觉得这是一个很好的提问的地方:你到底想从剖析器中得到什么 我来自实时图形和游戏,所以对我来说,尽快开发一个剖析器是很重要的。否则,游戏将变得不可玩,分析一个不可玩的慢游戏往往不是很有启发性。因此,我愿意牺牲一些准确性。我甚
再次,如果这只是StackOverflow的基础,我很抱歉,但它对我来说一直是一个非常有用的资源,而且这里有非常广泛的开发人员。如果它做了同样的事情,我将非常高兴。我的要求:
- 收集统计数据而不影响应用程序-例如,不要填满内存,允许从有问题的应用程序收集数据
- 能够简单且可重复地指定测量值(数据驱动)
- 自动化,因此我可以重复测量,无需点击,无需用户界面
- 使我们能够理解与WPF和其他声明性技术(如DLR或WF)相关的问题
- 无安装-无gac、msi等,如果可以在网络上运行则更好
- 从一开始就支持64位
- 不要试图了解所有可以做的分析——鼓励生态系统。如果可以使用其他工具分析原始统计数据就更好了李>
- UI(如果有的话)应该是好的——但重要的是统计数据。所以,不要在这上面花费时间,要做好核心评测。
- 支持对与服务和web应用程序不同的应用程序进行评测
- 考虑跨应用程序支持——大型应用程序通常需要了解跨多个可执行文件的应用程序性能行为。如果您的分析器允许轻松关联这些数据,那就更好了
- 非常易于使用-简单(但功能强大)的GUI
- 出色的性能-能够分析使用量极高的应用程序李>
- X64和X32支持
- 了解SQL,能够为我的所有SQL调用以及SQL提供堆栈跟踪和持续时间
- 易于配置,无需经历复杂的重新编译应用程序过程李>
- 易于分析作为副作用启动的服务、网站和流程
- “生产模式”,允许您从基于生产的系统收集关键统计数据。
- “自动瓶颈查找器”:针对生产应用程序运行,并使用启发式方法确定哪些方法比较慢
- 根据线程分析,告诉我哪些线程正在做所有的工作,以及在哪里
- 在不同粒度的配置文件中,允许执行“便宜”的配置文件,该配置文件只收集关键信息,并使用粒度配置文件进行挖掘李>
- 异常跟踪器,允许我跟踪应用程序中抛出的所有异常(关键统计数据和详细信息)
- 每线程评测-允许我评测应用程序中的单个线程
- 这是一个免费的.Net档案器,我一直想用它
我想看到的一件事是单声道兼容性。我已经开始涉足Mono,如果有一个.Net和Mono分析器就太好了 我的愿望清单:
(来源:) 我喜欢页边空白处的一行一行:
(来源:)我会在这里再加一个,那真的很好。制作一个具有
标记(字符串)
函数的简单程序集,如果应用程序调用了该方法,那么在结果中,您可以选择从那里查看结果(结束|其他指定标记)。另一种可能是BeginSequence
和EndSequence
之类的。如果您可以指定标记是仅适用于当前线程还是适用于所有线程,则为Double plus。如果集成了来自Perfmon的与.NET相关的评测措施,则最好避免使用Perfmon和您的应用程序进行“双重”监视。这对所有与内存相关的项目都非常有用。我首选的探查器是“DevPartner性能分析社区版”(DevPartner Performance Analysis Community Edition),不幸的是,它不再可用
使其在竞争中脱颖而出的是图形分析,该分析显示了一个框,其中包含当前选定的方法和被调用方法的输出连接器,显示了每个方法花费的时间百分比。也可以连接到来电。当然,这些caling和called方法具有相同的特性,您可以根据需要扩展它们
通过这种方式,您可以在调用堆栈上自由导航,查看堆栈的深度,并处理片段中的热路径
第二个需求是“易用性”,即它应该与所有相关的应用程序类型一起运行