我正在开发一个现有的大型企业应用程序。这个应用程序有一个内置于它的ViewModel基类的小型异步方法框架。这些异步方法类似于APM 和基于事件的异步模式。从两种已建立的模式中都可以借用一些东西。
我被分配用于分析应用程序中特别慢的视图的性能。我获得了Redgate ANTS Performance Profiler的许可证。
据我所知,我今天已经阅读过,ANTS通常能够将async / await调用与实际完成的工作相关联。但是,由于我正在处理的这个应用程序没有遵循async / await模式,我相信我错过了Async调用它们执行到完成处理程序的自动链接。
正在执行的实际工作是由应用程序的核心服务完成的,因此有数百个的事情导致此服务不断地执行工作。
由于这个问题,ANTS向我展示的是工作方法非常慢,但它却没有给出关于视图内部实际导致这项工作进展缓慢的反馈。
我和同事谈到了这个问题,他告诉我这就是为什么他不打扰表演者。他告诉我,他要做的是在视图上放置带时间戳的日志记录调用,然后编写一个快速而肮脏的工具,将数据过滤成人类可以使用的东西。但这正是分析器应该为我做的事情。
我们讨论了一段时间并得出结论,为了使用异步调用有效的工具,它要么必须支持特定标准,要么必须支持 in 实际代码,可能是一个属性,允许您标记异步调用和完成处理程序。
你同意我在这里所说的话吗?如果是这样,是否有任何这样的.NET性能分析器具有自定义属性来注释您的有问题的代码与分析?如果没有,请您告诉我如何解释这些数据以确定问题的实际原因?
感谢您的帮助。