Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Fastet/处理超大列表的最有效方法(c)_C#_List_Stream_Containers_Large Data - Fatal编程技术网

C# Fastet/处理超大列表的最有效方法(c)

C# Fastet/处理超大列表的最有效方法(c),c#,list,stream,containers,large-data,C#,List,Stream,Containers,Large Data,这个问题与讨论有关,但也可以单独处理。 另外,我认为将相关结果放在一个单独的线程中会很好。我在网上找不到任何全面处理这个话题的东西 假设我们需要处理非常大的数据列表,例如20亿个条目 将大型列表加载到内存中会导致System.OutOfMemoryException 或者,如果一个人最终使用了它,那么它就会耗尽整个内存 第一:如何最小化容器的大小: 一个20亿倍的阵列是否会更便宜? 用小数代替双精度? 在C-100中是否有比十进制更便宜的数据类型 在0.00001步中达到100对我来说就足够了

这个问题与讨论有关,但也可以单独处理。 另外,我认为将相关结果放在一个单独的线程中会很好。我在网上找不到任何全面处理这个话题的东西

假设我们需要处理非常大的数据列表,例如20亿个条目

将大型列表加载到内存中会导致System.OutOfMemoryException 或者,如果一个人最终使用了它,那么它就会耗尽整个内存

第一:如何最小化容器的大小:

一个20亿倍的阵列是否会更便宜? 用小数代替双精度? 在C-100中是否有比十进制更便宜的数据类型 在0.00001步中达到100对我来说就足够了 第二:将数据保存到光盘并读取

将列表保存到磁盘并再次读取的快速方式是什么? 在这里,我认为文件的大小可能是个问题。一个包含20亿个条目的txt文件将是巨大的——打开它可能需要几年时间。也许程序和txt文件之间的某种类型的流可以完成这项工作请提供一些示例代码:

第三:迭代

如果列表在内存中,我认为使用会有意义。 如果将列表保存到磁盘,迭代的速度主要受 我们可以从光盘上读到。
无论数据点是什么,20亿个数据点都是大量数据。这将占用大量内存、大量时间进行迭代,以及大量时间对磁盘或其他地方进行读/写操作。这并不是说它不能被优化,几乎可以肯定,在这种规模下,微优化变得很有用,但不要期待奇迹。@delnan我不期待任何奇迹。我只是在网上研究了几天,找不到一个全面的工作指南。因此,我认为stackOverflow将是一个放置它的好地方。在大多数情况下,链接到相关的SO帖子可以完成这项工作。你可以尝试创建一个列表。我的意思是把庞大的列表分成一堆较小的列表。使用字典保存这些列表。然后,在加载时,您只需检查字典,然后在较小的列表上迭代即可获得所需内容。这对你正在做的事情来说可能可行,也可能不可行。@deathismyfriend一本大字典不会比列表占用更多的空间吗?