问题:这是更有效地使用文本的文件或XML文件的储存静态数据
-
06-07-2019 - |
题
我有一些参考数据文本的文件(~5MB),我要用可能的应用程序。
该文件的格式:
1|a|This is line 1a
1|b|This is line 1b
2|a|This is line 2a
2|b|This is line 2b
2|c|This is line 2c
我想知道什么是最有效的方式(少存储器、快速、大小等)。 使用这个文件内的我应用程序。
a.) 我应该保存的文件作为一个原始资源和开和阅读整个文件中,每当我需要一定的线。
b.) 我应该将文件转换为XML和使用XPath查询文件的时候,我需要看一个的价值
<!--sample XML -->
<data>
<line number="1">
<entry name="a">This is line 1 a</entry>
</line>
</data>
c.) 我应该只是复制和粘贴到整个文件作为一个静态的串阵列中的应用和使用。
...任何其他建议都是受欢迎的。
[编辑] 我还需要搜索这个文件,而跳到任意的关键词,例如"路线图1a".
解决方案
XML总是比简单的文本或CSV文件需要更长的时间来阅读。 XML在折衷方面为您提供的是一种高度结构化且可靠的存储和检索数据的方法。正如您在上面的示例中所看到的,XML文件比实际包含的数据大2-3倍。
如果您确定自己永远不会遇到“分隔符”。你的简单文本文件中的字符,那可能会很好,纯粹从文件速度的角度来看。
其他提示
你没有提供足够的信息来回答这个问题。然而,如果我是一个赌博的人,答案可能是"没有"。
我还需要搜索这个文件
这是什么意思?你正在寻找通过一串钥匙?通过某些规则的表达吗?由SQL式查询字符串中的某些部分线路被解释为整数与串与其他什么东西?通过谷歌搜索风格的字符串?
每一个这些问题的答案可能规定一个不同的技术,用于储存这一信息。
我还需要...跳到任意线。
为什么?你怎么确定它的"任意线"你"跳跃"ing:钥匙?线号码吗?byte offset?搜索结果?别的东西吗?
并且,当然,还有其他问题,如:
- 怎么经常是这样的数据更新?
- 这是如何的数据更新:新版本的程序?下载个整体的文件?下载增量/差异?别的东西吗?
- 是的数据ASCII?UTF-8?别的东西吗?
等等。
什么,尺寸必须搜索后,建议"使用源码数据库",但一些其他答案可能远离这一解决办法。
如果您正在讨论非常少量的数据,那么Android XML编译器可以为您提供非常有效的二进制表示,您可以像XML一样访问它们。另一方面,如果数据非常大,并且您需要任意查询,我希望SQLlite能够赢得性能(以及灵活性)。一个小的基准应该很容易编写,并且会给你一个关于所涉及的基本权衡的好主意。
平面文件将是最后一个选项,imo,但如果文件不是很大,则可以正常工作。
如果将效率定义为(更少的内存,快速,大小等),则可以更快地加载和保存平面或分隔文件。
然而,人们使用XML是因为他们愿意以某种速度交换XML以获得更大的灵活性和易用性。