我正在创建一个在内存中保存大量用户数据负载的应用程序,并且它主要将其全部保存在 List<T> 结构中(以及一些 Dictionary<T,T> 当我需要查找时)。
我想知道...
列表的效率如何?我为每个人获得多少内存开销?(也就是说,除了它们包含的对象之外的内存空间)每次实例化一个新对象时我要支付多少罚款?
有没有更有效的方法?
字典只是哈希表,对吗?还是它们是一种效率较低的数据结构?
我想使用数组,但我有一个典型的问题是总是从它们中添加和删除东西,所以不得不增长/缩小它们会很痛苦。
有什么想法/建议吗?
编辑:我知道我的基本数据结构 101,以及为什么链接列表更适合添加/删除,而哈希表更适合随机访问。
我最关心的是.Net 的特质。例如,每个结构浪费了多少内存。并且浪费时间初始化/杀死它们。
例如,如果实例化/GC 一个 List 需要很多时间,但清除它的时间不多,也许我应该保留一小部分 List 等待我,然后清除它们并将它们发送回池中完成后,而不是简单地取消引用它们。
或者,如果 Hashtables 访问速度更快但浪费大量内存,我可能更喜欢使用 Lists 并遍历它们,用于小项目计数。
而且我真的很想关注内存使用情况,因为我的应用程序非常耗费内存(想想 memcached 之类的)......有谁知道我在哪里可以找到这样的信息?