【问题标题】:Whats faster? Caching a large list of Objects or Accessing them through IEnumerable? [closed]什么更快?缓存大量对象或通过 IEnumerable 访问它们? [关闭]
【发布时间】:2013-12-31 16:20:39
【问题描述】:

我需要能够遍历实例化的特定类型的所有对象。

传统上,我会将这些对象缓存在一个列表中,并在需要时遍历它们。然而,这些对象的数据量很大,而且数量很多,所以我担心在整个程序期间将这么多对象保留在内存中。

另一方面,我正在研究查询它们并将查询存储在 IEnumerable 中,以便它们实际上并不存储在内存中,而是在每次迭代时解决。然而,我担心在每次迭代中必须找到每个对象的开销。 (我还没有决定实际上可以有效地做到这一点的机制,但那是另一个问题)

在我看来,这是您需要找到平衡点的问题之一,缓存可能是内存密集型的,但 IEnumerable 可能是处理密集型的。所以我想知道其他人对此有何看法。

【问题讨论】:

  • 您已经正确地确定了权衡。没有人能告诉你什么选择最适合你。测量。

标签: c# list caching ienumerable


【解决方案1】:

您最初将它们保存在列表中的方法很好。您只需要确保在完成使用该对象后已将其从列表中删除,以便它可以进行垃圾收集。否则,如果您使用引用类型,则不应该担心这种方法的内存消耗。该列表将简单地指向内存中已经存在的对象(它们不会被复制)。您说您想检索某些对象的所有实例,因此保留它们的列表是合理的。

【讨论】:

    猜你喜欢
    • 2017-02-24
    • 2016-07-13
    • 1970-01-01
    • 2012-11-09
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2022-08-06
    相关资源
    最近更新 更多