我在哪里可以找到使用`List <t>`?</t>的实际/实时场景

时间:2009-04-21 05:23:37

标签: c#

在哪里可以找到使用List<T>的实用/实时场景? 我想知道我们在哪里以及如何实施List<T>

任何代码示例或任何链接都可以。

9 个答案:

答案 0 :(得分:4)

MSDN page on List<T>怎么样?那里有一个解释和一个例子。

答案 1 :(得分:2)

听起来您需要对服务的性能需求进行建模,以查看List或任何数据结构是否有效。你每秒需要数百万件物品吗?十亿?毫秒?确保您符合您的要求,或重新编写规格!

答案 2 :(得分:2)

我从来没有为类似实时的系统编写软件,我怀疑.NET是否适合它。你永远不知道什么时候垃圾收集器会触发,暂停你的程序一段不知道的时间,然后才能将执行返回给你的程序,就像什么也没发生一样。

您能告诉我们更多有关数据类型以及您希望对列表执行的操作类型吗?具有List的最慢部分可能是当您添加最初为其创建的项目时发生的基础数组的大小调整。如果可以计算该信息,则可以使用接受整数作为初始大小的构造函数来避免这种情况。另外,远离一些插入/移除等方法,它们听起来就像听起来一样快。

答案 3 :(得分:1)

简单地说,只要你想要一个列表(数字列表,人员列表,任何列表),你只需要使用List,List,List。也许我错过了你的问题......你问如何实现List?或者如何使用列表实现代码?我想这更像是第二选择。

答案 4 :(得分:1)

在“实时”系统中,您可能希望确保创建的列表足够大,以便在您第一次创建时保存您打算放入的所有数据(使用您传递的构造函数)容量)。

您还希望避免以下操作(可能更多),因为它们相对昂贵(即它们可能看起来是O(1),但不是):

  • Insert(int,T)
  • 删除(T)
  • RemoveAt移除(int)的

列表中还有其他O(N)操作,但大多数操作都是通过查看方法的作用来猜测的。

也就是说,知道它是否适合您的性能要求的唯一方法是测试它。为自己找一个好的测试工具,并确保它能够满足您的需求。

答案 5 :(得分:1)

  1. 确定列表&lt;&gt;
  2. 的替代方案
  3. 测量List&lt;&gt;的性能与针对您的特定情况的替代进行比较。您的问题的一般答案可能不准确。

答案 6 :(得分:1)

什么样的实时是实时的?因为如果你想真正实时,那么.Net和Windows都不是你的朋友。

这并不简单: http://www.eurotech-inc.com/info/white-papers/Managed_Code_for_Real_Time.pdf

答案 7 :(得分:1)

对于性能关键系统,我同意List<T>可能不适合这项工作,因为它在实施方面有点臃肿。当然它很容易使用,但它有很多警告。

要真正了解它的表现:

  • 创建一个程序,为您的应用程序执行一些典型操作,然后使用List<T>对其进行概要分析。
  • 使用RedGates反射器研究List<T>的内部工作原理,真正找到瓶颈并找到替代实现。例如,一个意外的减速点是访问Count()方法,因为它遍历列表中的所有内容。
  • 您的发现应该足以实现IList<T>接口的“涡轮式”实现,您可以在系统上使用该接口并提高性能。

答案 8 :(得分:0)

我认为您正在寻找List与C#中其他数据结构的比较。 如果你过滤掉你的问题会很好。