【发布时间】:2009-05-15 22:29:36
【问题描述】:
我有一些(少量)数据需要在初始加载时快速访问,但在那之后就不需要了。
现在,我已将数据(通用列表)序列化为一个 Xml 文件,并根据需要在加载时对其进行反序列化。
我的问题是我应该使用 XmlSerializer 还是 BinaryFormatter?我不担心文件大小,而是序列化速度。
【问题讨论】:
标签: c# xml database serialization binary
我有一些(少量)数据需要在初始加载时快速访问,但在那之后就不需要了。
现在,我已将数据(通用列表)序列化为一个 Xml 文件,并根据需要在加载时对其进行反序列化。
我的问题是我应该使用 XmlSerializer 还是 BinaryFormatter?我不担心文件大小,而是序列化速度。
【问题讨论】:
标签: c# xml database serialization binary
BinaryFormatter 比 XmlSerializer 快。它必须处理不那么臃肿的格式,而不会出现字符串解析问题。
【讨论】:
有趣的答案。我将建议将数据作为代码持久化,并将其构建到一个程序集中,该程序集将被应用程序的其余部分引用。
【讨论】:
“我们应该忘记小的效率,比如说大约 97% 的时间:过早的优化是万恶之源。” -- 唐克努斯
如果数量很少,请使用 XmlSerializer,即使它肯定更慢。这是当有人试图查看文件以诊断崩溃时可能会导致咒骂的小效率之一。
【讨论】:
XML 很慢,要检查的语法太多。您可以使用制表符分隔或 CSV 文件吗?
【讨论】:
由于 John Saunders 没有建议,我建议将您的静态数据序列化为代码。作为对可维护性的微弱点头,您可以将其驻留在外部程序集中。这应该是性能最高、初始复杂度最低的解决方案。
如果数据有规律的变化,或者是业务逻辑,那么忽略这个答案。以免被警告!
【讨论】: