关于List <t> Count属性</t>的C#性能问题

时间:2013-11-02 08:59:10

标签: c# performance

我正在研究的项目是关于从网络集请求xml。服务器端构造xml。 xml可能有很多节点,因此性能不是那么好。

我使用virtual studio 2010探查器来分析性能问题。 发现最耗时的函数是 System.Collections.Generic.ICollection`1.get_Count(),它实际上是Generic List的Count属性。这个函数被称为 9000次< /强>

表现数据如下:

经过的独占时间 4154.14(ms),而应用独占时间仅为 0.52(ms)

我知道Elapsed独家时间和应用专属时间之间的差异。 应用程序独占时间不包括上下文切换内容的时间花费。 当代码只获取通用列表的Count属性时,上下文如何切换到快乐。

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

1 个答案:

答案 0 :(得分: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;
  }
}

它实际上返回了一个字段的值而没有做任何其他事情。我建议你的表现在其他地方,或者你误解了你的探查者的输出。