什么比这更快?缓存大量对象或通过IEnumerable访问它们?

Mic*_*r3D 1 c# ienumerable caching list

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

传统上,我会将这些对象缓存在列表中,并在需要时迭代它们.然而,对象是数据量很大,并且有很多对象因此我担心在程序的整个过程中将很多对象保留在内存中.

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

在我看来,这是你需要找到一个balence,缓存可能是内存密集的问题之一,但IEnumerable可能是处理密集型.所以我想知道其他人对此的看法.

Dar*_*rov 5

将它们保存在列表中的初始方法很好.您只需要确保在完成对象操作后已从列表中删除该对象,以使其符合垃圾回收条件.否则,如果使用引用类型,则不应该关注使用此方法的内存消耗.该列表将简单指向内存中已存在的对象(它们不会重复).你说你想要检索一些对象的所有实例,所以保留它们的列表是合理的.