2012-04-11 29 views
0

我需要整数的大3D阵列保存到文件中,并且用C再次装入++装载大阵列。 它是256 * 256 * 256 = 16777216整数。保存和在C++

什么是拯救这个并重新加载的最佳方式?我最感兴趣的是快速加载时间。

+0

您应该可以使用多个线程从文件加载(因为任何数量的阅读器都可以)。将它们存储在同一阵列中必须小心谨慎(以免互相干扰)。我会尝试保存数据,以便使多个线程可行(即换行格式)。 – twain249 2012-04-11 20:41:34

+1

@ twain249我想说的瓶颈是磁盘,将寻求通过移动它在文件中来回时间不会使它更好地太多...只是在说...... – littleadv 2012-04-11 20:44:09

+0

也许看到的问题[如何压缩一个带有zlib的缓冲区](http://stackoverflow.com/q/4538586/1084416) – 2012-04-11 20:54:19

回答

8

如果阵列中的连续内存分配(即:你不单独分配每个维度) - 你可以转储整个内存块到文件。它需要尽可能多的费用,但这是最小的开销(即:在整个数据块上调用二进制写入)。

如果你在一个系统和装载在另一个上节省,你可能有数据表示的问题,在这种情况下,你可能想要序列化的阵列,并保存在受控物质的每个值。

+0

谢谢!我会尽力实现这一点。有任何可以帮助我的网站引用? – hansdam 2012-04-11 20:49:57

1

您可能感兴趣的Boost.Serialization,特别是如果你(1)要在能力上盘容易店这样的数据,(2)需要一个连贯的方式来保存更复杂的对象,以及(3)想办法解决这是便携式。