在程序中存储数据时减少内存使用 - VB.NET / C#

时间:2012-04-18 15:45:11

标签: c# vb.net arraylist

我有一个ArrayList,可以在其中存储100,000多个数字。每个数字的长度为10位或更小。程序本身有数据输入,它通过用户输入循环,以查看是否有任何数字已使用if ArrayList.Contains(userinput)在数组中。

当拥有这个大小的ArrayList时,似乎正在使用大量内存。是否有更快的方式来运行它,例如。数据库或If TextFile.Contains(Line)

3 个答案:

答案 0 :(得分:7)

你应该使用List<T>来避免装箱并节省记忆 使用HashSet<T>会更快,但会使用比List<T>更多的内存。

根据您的确切情况,数据库可能是最佳的。

答案 1 :(得分:4)

另一个解决方案可能是排序顺序中的100.000+元素数组,并使用BinarySearch来查找感兴趣的元素。

Mush比Contains更快,你不需要分配字典,所以没有额外的内存消耗。

所有这些内容都是测量的主题,可以在您的具体场景中为您选择正确的选择

答案 2 :(得分:0)

只要您有并发读/写方案,请考虑使用System.Collections.Concurrent.ConcurrentDictionary<,>。它应该提供更好的性能,因为它不需要锁定它的操作。但是,如果操作比简单的添加/获取/删除更复杂,那么您仍然需要锁定,HashSet<>应该更快(如SLaks所建议的那样)。