我目前正在使用 PerfView 对我的 (C#) 应用程序进行性能分析。但通常这些应用程序使用大量的数据库调用。所以我问自己这样的问题: - 在存储库中花费了多少时间?- (等待 SQL 查询返回花费了多少时间?) -> 我不知道这是否可以通过 PerfView 发现
但从我的痕迹中,我几乎没有得到任何有用的结果。在“任何堆栈”视图中,它告诉我(当我在我的存储库上使用分组时)在我的存储库中花费了 1.5 秒(整个调用大约为 45 秒)。而且我知道这不是真的,因为存储库调用了数据库很多。
是否只是在等待 SQL 查询完成时没有捕获 CPU 指标,因为在这段时间内 CPU 无事可做,因此我的时间只包括存储库中的数据转换时间等?
谢谢你的帮助!
编辑:
我错过的是打开线程时间选项以获取阻塞代码的时间(我想这是在数据库调用期间发生的事情)。我现在得到了所有的堆栈,只是过滤掉了无趣的东西。但我似乎无处可去。
当使用“线程时间”时,对我来说特别有趣的是 BLOCKED_TIME。但有了它,我认为时间已经过去了。当您查看屏幕截图时,它告诉我 CPU_TIME 是 28,384。这是毫秒(afaik),但 BLOCKED_TIME 是 2,314,732,不能是毫秒。所以 CPU_TIME 的百分比非常低,只有 1.2%,但 70 秒中有 28 秒仍然很多。所以包容百分比时间在这里比较苹果和橙子。有人可以解释一下吗?