我正在使用dotTrace来评测用C#编写并在IIS服务器上运行的WCF.Net web应用程序。一个条目显示了在PipelineRuntime.ProcessRequestNotification中花费的7.77秒,以及以下子进程
- MyMethod中的0.03秒
- HttpRequest.GetHeaders中0.016秒
- 0.2秒[不安全的堆垛行走]
这就使得7秒多的时间完全无法计算。有人知道错过的时间会去哪里吗?有没有可能MyMethod中的某些东西正在消耗时间,但dotTrace只是没有正确报告它?
在这种情况下,未计数的时间是PipelineRuntime.ProcessRequestNotification自己的时间。这意味着该特定函数的代码以及JIT函数内联的所有代码消耗了大约7秒。
如果我们假设,但不应该花那么多时间,我们必须调查原因。有两种可能性-此函数调用次数过多(跟踪分析类型将有助于检查)或该函数中的某些指令速度较慢(逐行分析类型将帮助您分析内部的相对指令时间)。