2011-12-31 77 views
1

我有一个我需要在本地存储的字符串列表(假设列表可以在10个项目到100个项目之间运行)。我想知道是否应该将列表写入Flat数据库或使用Serialization将包含列表的对象展平?哪个更昂贵(CPU方面)?有什么条件使一个比另一个更昂贵?在Java中什么更昂贵?序列化或写入文件?

谢谢!

+7

为什么不尝试一下和标杆? – 2011-12-31 21:28:59

+1

更好,为什么不看其他要求,看看最适合他们的东西?这两种选择倾向于在不同的情况下使用......如果与合作是一种痛苦,谁会关心什么更快? – cHao 2011-12-31 21:32:35

+2

如果你只写了10-100个字符串,你甚至可能看不到任何区别。你为什么如此关心这样一个小数据集的性能?如果不符合您的要求,请使用最简单的解决方案并进行更改。 – milan 2011-12-31 22:18:31

回答

0

我有我需要在本地存储的字符串列表(假设列表可以在10个项目之间运行到100个项目)。

假设串的总长度小(例如,小于10K),用于执行保存在用户空间的CPU时间很可能是使用任一序列或平面文件几毫秒。换句话说,用户不会注意到其中的差异。

你应该看其他原因两个选择(和其他人)之间进行选择:

  • 有多容易写代码。

  • 很多额外的依赖关系如何在保存的数据文件。

  • 易读/可编辑的替代拉...如果你需要做到这一点。

  • 如果您需要更改保存到文件中的内容的“架构”,这将会变得多么容易/困难。

  • 是否可以在不重写整个文件的情况下更新一个字符串......如果这是相关的。

  • 支持其他事情,如原子更新,交易,复杂的查询等...如果这些是相关的。


如果,尽管上面我说,你还是想知道,这将是更快(多少)​​,那么基准它。真实世界的表现将取决于您未指定的因素。

以下是关于如何编写Java基准以提供有意义的结果的几个重要参考。

而且你可以尝试回答你的问题,这部分:

什么是让比一个更昂贵的条件其他?

(见上文)

0

我不确定费用,但我相信因为对象表示很多次都包含大量元数据(和结构),这可能导致创建比原始预期数据大的大对象大小。 示例对此可能是当您在DOM对象中存储xml结构时 - 内存大小比原始数据大约大4倍。

基于上述,我认为序列化作为一个对象可能会更昂贵。您可能还想考虑最终产品的消耗。如果你想要生成的文件是人类可读的,你将不得不序列化字符串数据的可读性。

1

尤其是因为它们是字符串,只需将它们每行写入一个文件即可。简单,快速,而且更容易测试。