gpt4 book ai didi

.net - BinaryFormatter 替代品

转载 作者:行者123 更新时间:2023-12-03 23:47:02 27 4
gpt4 key购买 nike

BinaryFormatter 序列化的 128³ 数组加倍,占用 50 MB 空间。序列化具有两个双字段的 128³ 结构数组需要 150 MB 和超过 20 秒的处理时间。

是否有快速简单的替代方法可以生成紧凑的文件?我的期望是上述示例将分别占用 16 MB 和 32 MB,并且处理时间不到两秒。我看了一下 protobuf-net,但它似乎甚至不支持结构数组。

PS:对于记录文件大小的错误,我深表歉意。 BinaryFormatter 的实际空间开销并不大。

最佳答案

如果您使用 BinaryWriter 而不是 Serializer,您将获得所需的(最小)大小。
我不确定速度,但试一试。

在我的系统上写入 32MB 需要不到 0.5 秒,包括流的打开和关闭。

您必须自己编写 循环写入数据,如下所示:

struct Pair
{
public double X, Y;
}

static void WritePairs(string filename, Pair[] data)
{
using (var fs = System.IO.File.Create(filename))
using (var bw = new System.IO.BinaryWriter(fs))
{
for (int i = 0; i < data.Length; i++)
{
bw.Write(data[i].X);
bw.Write(data[i].Y);
}
}
}

static void ReadPairs(string fileName, Pair[] data)
{
using (var fs = System.IO.File.OpenRead(fileName))
using (var br = new System.IO.BinaryReader(fs))
{
for (int i = 0; i < data.Length; i++)
{
data[i].X = br.ReadDouble();
data[i].Y = br.ReadDouble();
}
}
}

关于.net - BinaryFormatter 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com