我有一个我需要在本地存储的字符串列表(假设列表可以在10个项目到100个项目之间运行)。我想知道是否应该将列表写入Flat数据库或使用Serialization来展平包含列表的对象?哪个更贵(以CPU为单位)?是什么条件使一个比另一个更贵?
谢谢!
答案 0 :(得分:1)
特别是因为它们是字符串,所以只需将每行写出一个文件即可。简单,快速,更容易测试。
答案 1 :(得分:0)
我不确定费用,但我相信,因为对象表示很多次包含大量元数据(和结构),这可能导致创建比原始目标数据大的大对象大小。 示例可能是在DOM对象中存储xml结构时 - 内存大小约为原始数据的4倍。
基于以上所述,我认为序列化作为对象可能更昂贵。您可能还想考虑最终产品的消耗。如果您希望生成的文件是人类可读的,则必须序列化String数据以便于阅读。
答案 2 :(得分:0)
我有一个我需要在本地存储的字符串列表(假设列表可以在10个项目到100个项目之间运行)。
假设字符串的总长度很小(例如小于10K),用于进行保存的用户空间CPU时间可能是使用序列化或平面文件的几毫秒。换句话说,它会如此之快以至于用户不会注意到差异。
你应该看看在两种选择(和其他)之间进行选择的其他原因:
编写代码有多容易。
备选方案有多少额外的依赖关系。
保存数据文件的人类可读性/可编辑性......如果您需要这样做。
如果你需要这样做,改变保存到文件中的东西的“模式”是多么容易/多难。
是否可以更新一个字符串而不重写整个文件......如果这是相关的。
支持其他内容,例如原子更新,交易,复杂查询等......如果这些是相关的。
如果,尽管我上面说过,你仍然想知道哪个更快(以及多少),然后对它进行基准测试。现实世界的表现将取决于您未指定的因素。
以下是关于如何编写Java基准测试的几个重要参考资料,以便提供有意义的结果。
您可以尝试回答这部分问题:
使一个人比另一个人贵一些的条件是什么?
(见上文)