在程序中存储数据时减少内存使用 - VB.NET / C#
本文关键字:VB NET 内存 程序 存储 数据 | 更新日期: 2023-09-27 18:31:36
我有一个ArrayList,里面存储了100,000+个数字。每个数字的长度为 10 位或更小。程序本身有数据输入,它循环通过用户输入以查看他们的任何数字已经使用if ArrayList.Contains(userinput)
数组中。
看起来,当拥有这种大小的 ArrayList 时,正在使用大量内存。是否有更快的方法来运行它,例如数据库或If TextFile.Contains(Line)
?
您应该使用List<T>
以避免装箱并节省内存。
使用HashSet<T>
会快得多,但会比List<T>
使用更多的内存。
根据您的确切方案,数据库可能是最好的。
另一种解决方案是按排序顺序排列100.000+
元素数组,并使用BinarySearch
来查找感兴趣的元素。
比Contains
更快,你不需要分配字典,所以没有额外的内存消耗。
所有这些东西都是一个测量的主题,以便在您的具体场景中为您选择正确的选择。
一旦具有并发读/写方案,请考虑使用 System.Collections.Concurrent.ConcurrentDictionary<,>
。它应该提供更好的性能,因为它不需要在其操作周围锁定。但是,如果操作比简单的添加/获取/删除更复杂,那么您仍然需要锁,并且HashSet<>
应该更快(正如 SLaks 所建议的那样)。