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

本文关键字:VB NET 内存 程序 存储 数据 | 更新日期: 2023-09-27 18:31:36

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

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

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

您应该使用List<T>以避免装箱并节省内存。
使用HashSet<T>会快得多,但会比List<T>使用更多的内存。

根据您的确切方案,数据库可能是最好的。

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

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

所有这些东西都是一个测量的主题,以便在您的具体场景中为您选择正确的选择。

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