当前位置 : 主页 > 大数据 > 区块链 >

序列化 – 如何使用protobuf序列化大型嵌套数组?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我使用protobuf-net进行二进制序列化.在序列化A类时,我是gettig OutOfMemory.使用BinaryFormatter很好地序列化了同一个对象. 下面是类示例: [ProtoContract]class A: [ProtoMember(1, DataFormat = DataFormat.Grou
我使用protobuf-net进行二进制序列化.在序列化A类时,我是gettig OutOfMemory.使用BinaryFormatter很好地序列化了同一个对象.

下面是类示例:

[ProtoContract]
class A:
   [ProtoMember(1, DataFormat = DataFormat.Group)]
   B[] Array1 {get; set;}
   ....

class B:
   [ProtoMember(1)]
   string Field1 {get; set;}

   [ProtoMember(2)]
   string Field1 {get; set;}

   [ProtoMember(3, DataFormat = DataFormat.Group)]
   C[] Array2 {get; set;} // 20000 elements
   ....

class C:
   [ProtoMember(1)]
   string Field1 {get; set;}

   [ProtoMember(2)]
   string Field1 {get; set;}
哇.简直哇哇谢谢你提出这个问题.有一个小故障,它在某些情况下错误地不应用组编码,包括你的.对于protobuf-net来说,这不是一个大问题,因为组和字符串是可以互换的,但这仍然是一个令人尴尬的小问题,尤其是因为“组”是(正如你已经正确使用的)关键在于向前发展 – 仅用于序列化大图.

我已经在本地和源代码中修复了这个问题 – 但是,我想在进行正式发布之前进行更多的稳定性测试.如果您乐意从源代码构建,它现在应该可以正常工作 – 或者如果您愿意,我可以通过电子邮件发送给您一个dll.

网友评论