哪个更适合性能:引用外部文档或内部集合?

时间:2017-07-19 14:04:47

标签: c# xml performance collections

我最近发现这篇帖子(Loading pokemon from xml file)让我思考,是否更好地引用外部文档中的大量对象(例如xml文件)或使用集合(例如列表或字典)明智的表现更好吗?

我没有编程很长时间,所以我道歉,如果这是一个“常识”类型的问题,但我主要关注性能方面的

  1. 如何访问内存?例如,集合是否需要更多地使用RAM而不是在硬盘驱动器上使用更多内存的xml文件?

  2. 访问随机对象时哪个过程更快? I.E. 100,1000甚至10,000个对象的列表?我的猜测是访问内部列表或字典比读取外部xml文件并尝试提取对象信息更快。

  3. 其中一个选项被认为是比其他选项更好的编程实践吗?这只是偏好吗? (我意识到这不一定是性能问题,但我相信它仍然值得了解。)

  4. 使用我在帖子(口袋妖怪)中找到的例子,我的第一个想法是使收集内部的两件事之一。

    1. 我会创建一个所有口袋妖怪派生的基类,然后是具有针对个人信息的特定种类的口袋妖怪的子类(虽然我相信有几百个口袋妖怪所以这可能不实用)。 / p>

    2. 我会创建一个名为pokemon的类,其中包含每个口袋妖怪所拥有的几个属性(例如名称,物种等等)

    3. 从这里开始,我可能会制作一个列表或字典,用于在需要时引用每个口袋妖怪。

      作为替代方案,我可能会像问题的海报那样做,即创建一个带有pokemon列表的xml文件,然后在需要时调用该文件。

      我包含了这些信息,以便上面的3个问题可能有某种上下文,但同样,我主要关注的是当存在大量对象时内部集合与外部文档的性能。

      注意:外部文档不一定必须是xml,但这是我找到的帖子中使用的内容。

2 个答案:

答案 0 :(得分:0)

内部集合为序列化/反序列化内容提供了更好的性能。

它真正归结为您的要求,而不是以更通用的方式决定事物。当应用程序很少访问您的数据并且您的应用程序是一个长时间运行的应用程序时,您可以继续将文件中的数据序列化,并在需要时对其进行反序列化以节省内存。但在更多情况下,它并不是很多,特别是对于拥有大块内存的工作站。我宁愿远离这种方法。

答案 1 :(得分:0)

部分答案:

  

如何访问内存?例如,集合是否需要   更多使用RAM而不是使用更多内存的xml文件   驱动?

RAM的使用取决于您是否立即加载整个xml文件。

  

其中一个选项被认为是比编程更好的编程实践   其他?这只是偏好吗? (我意识到这不一定是一个   性能问题,但我相信它仍然值得了解。)

外部资源最明显的优势是,每次更改数据时都不需要重新编译整个程序。还有其他优点/缺点取决于程序的大小,但通常,您可能想要更改的任何数据都不需要重新编译才能更新。