在大小为 100 的 3D 立方体中的四字节浮点数将至少占用 4,000,000 字节。这是一个相当大的块。
无论您使用什么数据结构,如果您同时将它们全部放在内存中,它们至少会占用那么多空间。
您可能需要考虑将它们移出内存并仅在需要时将它们带入。
最好的方法将取决于您需要对它们进行的处理。例如,如果您正在执行直接顺序处理,例如使用以下伪代码:
for i = 0 to 99:
for j = 0 to 99:
for k = 0 to 99:
loadAndDoSomethingWith (i, j, k)
flushData()
currentlyLoaded = -1
float buffer[100]
def loadAndDoSomethingWith (i, j, k):
if i * 100 + j != currentlyLoaded:
flushData()
currentlyLoaded = i * 100 + j
read buffer from file #currentlyLoaded
doSomethingWith (buffer, k)
def flushData():
if currentlyLoaded != -1:
write buffer to file #currentlyLoaded
那么你可以一次只引入一个维度(100 个浮点数)。
您可以使用多个缓冲区执行类似的方案来处理更复杂的情况,例如,如果您需要来自数据结构中更多位置的数据。您应该尝试将缓冲策略与您的算法相匹配,以尽可能避免颠簸。