如何提高反序列化速度?
使用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