内存有效的方式来存储许多小对象

use*_*359 5 c# design-patterns

我有一个Person带有4个字符串和整数的简单类。

public class Person
{
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
        public string PostalCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我们需要将大量的这些存储在内存中。该集合需要可以在任何字段中搜索。项目将作为生命周期的一部分进行添加和删除。

Flyweight模式似乎不起作用,因为对象上没有大量重复值,仅在字段级别。哪种模式或策略最有效地限制内存开销并表现良好?

Hen*_*man 2

我们需要在内存中存储大量这些。

那么数组 Person[]将是最精简的方式,但 aList<Person>会更接近并且更容易使用。只需确保使用容量参数最大程度地减少重新分配即可。

该集合需要可以通过任何字段进行搜索

简单的, .Where (p => p.FirstName == value)
使用字典加速会消耗内存。

  • @HenkHolterman [我认为整个想法不是一个问题](http://stackoverflow.com/questions/17452693/memory-efficient-way-to-store-many-small-objects#comment25356502_17452693),其中这就是我没有回答的原因。如果他实际上拥有如此多的数据以至于这些问题是相关的,那么我认为数据库无疑是最好的选择。重新实施数据库拥有的所有大型数据管理技术将是大量工作,而且没有真正的回报。 (2认同)