我需要快速存储/加载可能很大ushort[,,]
的byte[,,]
或double[,,]
数组。
我尝试过简单的方法,简单地将数组元素逐个扫描到FileStream fs
:
for (p = 0; p < Planes; p++)
{
for (y = 0; y < Height; y++)
{
for (x = 0; x < Width; x++)
{
fs.Write(BitConverter.GetBytes(array1[p, y, x]), 0, 8);
}
}
}
我已经用 替换了这个循环BinaryFormatter
,它的性能更好:
bf.Serialize(fs, array1);
我运行了一个小型基准测试存储,然后加载 3 x 1024 x 768 的双精度数组 10 次,结果如下:
天真的方法:10 628 毫秒
BinaryFormatter 方法:8 722 毫秒
有没有更快的方法?使用指针?将数组序列化为一维然后刷新到文件?
感谢您的任何建议。