protobuf-net的大文件反序列化

时间:2013-01-08 14:04:43

标签: deserialization protobuf-net binary-deserialization

我需要反序列化1.5GB txt文件。我使用的是code.google.com/p/protobuf-net /

中的protobuf-net

有时它会在不同的地方出现不同的异常(空引用,内存访问冲突)而失败(大约50%的情况)。我注意到如果处理器负载很低,那么失败的可能性就会降低。

我该怎么做才能避免这种失败?

以下是反序列化代码的示例:

public static History LoadFromFile(string path)
    {
        using (var fileStream = File.OpenRead(path))
        {
            var obj = Serializer.Deserialize<History>(fileStream);                
            return obj;
        }
    }

今天我有一个FatalExecutionEngineError,错误代码为0xc0000005,但我无法意识到代码的哪一部分可能不安全。这不是一个常数错误,重新启动应用程序后一切正常。

以下是序列化文件的示例,我需要反序列化: https://docs.google.com/file/d/0B1XaGInC6jg3ZXBZZDA3bHh3bVk/edit

1 个答案:

答案 0 :(得分:1)

Google:

  

协议缓冲区不是为处理大型邮件而设计的。作为一般经验法则,如果您正在处理大于每兆字节的消息,则可能需要考虑替代策略。也就是说,协议缓冲区非常适合处理大型数据集中的单个消息。

Source link