【问题标题】:Best storage approach for small amount of 99% static data needed at startup?启动时需要少量 99% 静态数据的最佳存储方法?
【发布时间】:2009-05-15 22:29:36
【问题描述】:

我有一些(少量)数据需要在初始加载时快速访问,但在那之后就不需要了。

现在,我已将数据(通用列表)序列化为一个 Xml 文件,并根据需要在加载时对其进行反序列化。

我的问题是我应该使用 XmlSerializer 还是 BinaryFormatter?我不担心文件大小,而是序列化速度。

【问题讨论】:

标签: c# xml database serialization binary


【解决方案1】:

BinaryFormatter 比 XmlSerializer 快。它必须处理不那么臃肿的格式,而不会出现字符串解析问题。

【讨论】:

    【解决方案2】:

    有趣的答案。我将建议将数据作为代码持久化,并将其构建到一个程序集中,该程序集将被应用程序的其余部分引用。

    【讨论】:

      【解决方案3】:

      “我们应该忘记小的效率,比如说大约 97% 的时间:过早的优化是万恶之源。” -- 唐克努斯

      如果数量很少,请使用 XmlSerializer,即使它肯定更慢。这是当有人试图查看文件以诊断崩溃时可能会导致咒骂的小效率之一。

      【讨论】:

      • XmlSerializer 没有序列化程序集第一次非常缓慢。使用预生成的序列化 asm,它具有可接受的性能。
      【解决方案4】:

      XML 很慢,要检查的语法太多。您可以使用制表符分隔或 CSV 文件吗?

      【讨论】:

        【解决方案5】:

        由于 John Saunders 没有建议,我建议将您的静态数据序列化为代码。作为对可维护性的微弱点头,您可以将其驻留在外部程序集中。这应该是性能最高、初始复杂度最低的解决方案。

        如果数据有规律的变化,或者是业务逻辑,那么忽略这个答案。以免被警告!

        【讨论】:

        • 这是一个非常有趣的想法,但在我的情况下,数据有可能在部署之间发生变化。
        猜你喜欢
        • 1970-01-01
        • 2018-12-11
        • 1970-01-01
        • 1970-01-01
        • 2019-02-24
        • 2014-01-02
        • 1970-01-01
        • 1970-01-01
        • 2012-12-21
        相关资源
        最近更新 更多