【发布时间】:2011-08-03 13:07:00
【问题描述】:
我需要一个关于如何在 iPhone 上处理大量数据的建议。假设我有大约 120k 文本记录的 xml 文件。我需要对这些数据进行搜索。我尝试过的解决方案是使用 Core Data 将信息按排序顺序存储在缓存中。然后使用快速工作的二进制搜索。但问题是建立这个缓存。首次启动应用程序需要大约 15-25 秒来构建此缓存。也许我需要使用不同的方法来搜索数据?
提前致谢。
【问题讨论】:
我需要一个关于如何在 iPhone 上处理大量数据的建议。假设我有大约 120k 文本记录的 xml 文件。我需要对这些数据进行搜索。我尝试过的解决方案是使用 Core Data 将信息按排序顺序存储在缓存中。然后使用快速工作的二进制搜索。但问题是建立这个缓存。首次启动应用程序需要大约 15-25 秒来构建此缓存。也许我需要使用不同的方法来搜索数据?
提前致谢。
【问题讨论】:
如果您使用的 XML 文件要求您不能缓存,那么除非您以某种方式仔细格式化您的 XML 文件以具有有用的数据遍历属性,否则您将不会成功——但是您可能会除非您有一些非常深奥的要求,否则请使用更有用的二进制文件。
您真正想要的是从一开始就使用一种典型的索引算法(磁盘哈希、B-tree 等)。
但是...
如果您必须读取并解析您的 XML 文本文件,那么您可以避开使用典型的大而慢的通用 XML 解析器并编写一个快速的 hackish 版本,因为大多数数据记录都是您的ll需要识别可能一遍又一遍地以相同的方式格式化。没什么特别的,只要找到相关数据字段的开始位置,抓取数据直到结束,移动到下一个数据字段。
老实说,120k 的文本并不算多——听起来您使用的任何 XML 解析器都很慢。 (我一直使用这个技巧来自动生成 XML 数据,这些数据只表示表或简单数据记录之类的东西——我自己的解析器比任何通用 XML 解析器都快。)
这可能是您真正想要的解决方案,因为您听起来很喜欢 XML 文件格式。如果您不小心,它不会像通用 XML 解析器那样防错,但是它会像没人管的事一样吃掉 120KB 的文件。它是入门级的 CS 工作——读取具有特定格式的文件并从中获取数据值。如果您可以访问正则表达式,它们就是您的朋友。
【讨论】:
尝试在云中存储和执行搜索。 (使用存储在某处服务器上的数据库)
除非您特别需要设备上的所有信息..
【讨论】: