我有一个items.xml文件,一旦应用程序启动就会加载到内存中.items.xml中的每个元素都"转换"为类型Item(只有很少的int和字符串属性),然后添加到项列表中.项目列表应包含数千个实例Item.
在对象中存储数据(Item在我的示例中为类)是可以的吗?还有另一种方法将这些数据存储在内存中吗?
首先担心正确的功能.其次,担心性能.分析应用程序并查看其在性能方面受到的影响.它可能永远不会在您的配置中.但是,如果您在此区域遇到性能问题,请尝试为项目的单个或子集创建密钥.这样,您可以使用键和项(或项列表)填充一个或多个词典,从而减少对相关项的访问时间.
请记住,这些查找字典"便宜",因为它们只存储对项目的引用而不是对象的副本.
那很好,只要你确保你不吃所有的记忆应该没问题.我已经为具有更大数字的复杂系统做到了这一点.
如果您的数据通过列表中的索引以外的其他内容定期访问,则可能需要使用字典来索引项目,例如:
Dictionary<string, Item> lookup =
list.ToDictionary(x => x.Code);
Run Code Online (Sandbox Code Playgroud)
然后您可以访问:
Item item = lookup["abc012"];
Run Code Online (Sandbox Code Playgroud)
也; 如果许多字符串值重复,你可以通过编写自己的interner来节省一些空间;
Dictionary<string,string> interner =
new Dictionary<string,string>();
foreach(Item item in list) {
string s, name = item.Name;
if(interner.TryGetValue(name, out s))
item.Name = s;
else
interner.Add(name, name);
}
Run Code Online (Sandbox Code Playgroud)
这将通过仅保留和重用唯一字符串来减少内存使用
| 归档时间: |
|
| 查看次数: |
6941 次 |
| 最近记录: |