在C#中将大型双数组保存为文件的最有效方法

时间:2014-07-11 17:29:02

标签: c# file-type saving-data large-data

我正在编写一个程序,它将.dat文件中的数据读入双[,,]数组,计算一些内容并需要将数组写入文件以保存以供以后使用。

这些数组最多可以有[64x64x150000]个元素,这些元素迫使我已经将这些文件以小部分加载到程序中以使用它们(否则调用MemoryException)。到目前为止,我使用文本文件在我的硬盘上保存较小的数组,但是一步一步地保存[64x64x150000]数组,最后每个文件的大小超过6GB,当你需要处理很多这样的数据时,这很安静很多.dat -files并且几乎可以保留所有的.txt文件。

所以我想知道是否有任何其他文件类型可以节省一些硬盘空间,或者是否有其他方法可以将这些阵列保存在我的程序之外,以便以后使用较少的硬盘空间要求。

(我需要能够在不同的计算机之间交换文件)。

2 个答案:

答案 0 :(得分:0)

(8 B /双*(64 * 64 * 150000)双)/(10 9 B / GB)= 5.6 GB

因此,除非您降低精度(浮动)或执行某种压缩,否则您需要5.6 GB来存储所有这些双打。减少浮动每个文件需要2.8 GB。

对于长度为150000的每个64 * 64向量,您可以执行信号压缩(取决于数据的样子)。这是一个广泛的主题,所以我不知道更多我可以给你的是一个起点:Signal compression

答案 1 :(得分:0)

压缩,或尝试Binary Serialization。 double可以占用文本中的几十个字节,特别是取决于您的编码(每个数字1-2个)。在二进制文件中,每个字节恰好是8个字节(+用于簿记的开销很大,可能很小)。