加载并执行大量数据搜索

时间:2011-07-11 17:57:38

标签: iphone data-structures

我需要建议如何在iPhone上运行大量数据。假设我有〜120k文本记录的xml文件。我需要对这些数据进行搜索。我尝试过的解决方案是使用Core Data在缓存中按排序顺序存储信息。然后使用快速运行的二进制搜索。但问题是建立这个缓存。首次启动应用程序需要大约15-25秒来构建此缓存。也许我需要使用不同的方法来搜索数据?

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果您使用的XML文件要求无法缓存,那么除非您以某种方式仔细格式化XML文件以获得有用的数据遍历属性,否则您不会成功 - 但是您可以好好使用一个更有用的二进制文件,除非你有一些非常深奥的要求。

你真正想要的是一个典型的索引算法(在磁盘散列,B树等)。

<强>然而 ...

如果你来读入和解析你的XML文本文件,那么你可以使用一个典型的大而慢的通用XML解析器并写一个快速的hackish版本,因为大多数数据记录你'我需要识别可能一遍又一遍地以相同的方式格式化。没有什么特别之处,只需查找相关数据字段的起始位置,抓取数据直到结束,然后转到下一个数据字段。

老实说,120k的文字不是很多 - 听起来像你使用的任何XML解析器都很慢。 (我一直使用这个技巧来处理自动生成的XML数据,它只表示表或简单的数据记录 - 我自己的解析器比任何通用的XML解析器都快。)

这可能是您真正想要的解决方案,因为您听起来非常依赖于XML文件格式。如果你不小心的话,它不会像通用的XML解析器一样防错,但它会像没有人的业务一样吃掉那个120KB的文件。它是入门级CS工作 - 读取具有特定格式的文件并从中获取数据值。如果您可以访问它们,则Regexps是您的朋友。

答案 1 :(得分:0)

尝试在云中存储和执行搜索。 (使用存储在某个服务器上的数据库)

除非您特别需要设备上的所有信息..