1

我正在处理的项目是关于从 Web 集中请求 xml。服务器端构造xml。xml可能有很多节点,所以性能不是很好。

我使用 virtual studio 2010 profiler 来分析性能问题。发现最耗时的函数是System.Collections.Generic.ICollection`1.get_Count(),实际上是Generic List的Count属性。这个函数被调用了大约9000次

性能数据如下图:

Elapsed 独占时间4154.14(ms),而Application独占时间仅为0.52(ms)

我知道经过的独占时间和应用程序独占时间之间的区别。应用程序独占时间不包括花费在上下文切换内容上的时间。当代码刚刚获得 Generic List 的 Count 属性时,上下文切换的东西怎么可能快乐。

我对性能分析器数据感到非常困惑。有人可以提供一些信息吗?非常感谢!

4

1 回答 1

3

实际上,反编译的源代码显示以下内容List<T>

[__DynamicallyInvokable]
public int Count
{
  [__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] get
  {
    return this._size;
  }
}

它实际上是返回一个字段的值并且什么都不做。我建议您的性能影响在其他地方,或者您误解了探查器的输出。

于 2013-11-02T09:04:24.703 回答