Csharp/C#教程:如何提高反序列化速度?分享


如何提高反序列化速度?

使用BinaryFormatter进行序列化/反序列化,生成的序列化文件大小约为80MB。 反序列化需要几分钟。 我怎么能改进这个? 这是反序列化代码:

public static Universe DeserializeFromFile(string filepath) { Universe universe = null; FileStream fs = new FileStream(filepath, FileMode.Open); BinaryFormatter bf = new BinaryFormatter(); try { universe = (Universe)bf.Deserialize(fs); } catch (SerializationException e) { Console.WriteLine("Failed to deserialize. Reason: " + e.Message); throw; } finally { fs.Close(); } return universe; } 

也许在反序列化之前读取所有内存或使用其他一些序列化技术?

尝试UnsafeDeserialize 。 据说可以提高速度。

请看一下这个post 。

尝试一次性将文件读入内存流,然后使用内存流进行反序列化。

数据有多复杂? 如果它是一个对象 (而不是一个完整的图形 ),那么你可能会从尝试protobuf-net获得一些有趣的结果。 通常很容易适应现有的类,并且通常更小,更快,更不易碎(您可以更改对象模型而不会丢弃数据)。

披露:我是作者,所以可能有偏见 – 但它确实并不可怕……我很乐意借给你一些时间来帮助你尝试它。

* =在合理范围内

在Universe类中实现ISerializable

上述就是C#学习教程:如何提高反序列化速度?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1025849.html

(0)
上一篇 2022年1月9日
下一篇 2022年1月9日

精彩推荐