【问题标题】:Performance issue - plist vs sqlite in iOS性能问题 - iOS 中的 plist 与 sqlite
【发布时间】:2011-05-16 14:06:00
【问题描述】:

我需要跟踪一些变量并经常保存它们。我不需要复杂的搜索和排序,只需要简单的读/写。

plist 和 sqlite 在读/写性能上有什么区别?

除了以上两种方法,我还应该使用核心数据吗?

请给我一些提示。

谢谢。

【问题讨论】:

标签: iphone ios ipad


【解决方案1】:

在 SQlite 中,您可以执行所有与 SQL 相关的功能,例如创建、删除......并且还可以存储大量数据。但在 Plist 中,您只需要存储它。

Plist 和 SQLite 有如下不同的用途..

PList 是一种文件格式,用于存储少量结构数据(小于几百千字节),通常是字典。 PList 本身没有排序功能,尽管可以很容易地编写代码对其进行排序。 属性列表可能是最容易维护的,但它会一次全部加载到内存中。这可能会占用设备的大量内存

SQLite 是一个成熟的数据库。文件大小(在 iPhone 上)基本上是无限的。内置排序功能。可以进行查询和关系表设计。性能应该与您可能提出的任何排序算法一样好。 另一方面,sqlite 数据库将仅加载您请求的数据。我不确定您的数据是如何构造的,但是您可以很容易地使用单个数据库表创建键值对。 (具有键列和值列的单个表)然后,如果是我,我会编写一个 Objective-C 类来包装数据库查询,这样我就可以编写简单的语句,例如:

NSString *welcomeText = [[MyData sharedData] dataWithKey:@"WelcomeText"];

首先将数据导入数据库并不困难。您可以使用命令行 sqlite3 实用程序批量加载数据。有一个名为 .import 的命令将从文本文件中导入您的数据。

【讨论】:

    【解决方案2】:

    来自@Robert Harvey在上一个SO问题plist or sqlite中提供的答案

    PList 是一种文件格式,用于存储 少量的结构数据(少 超过几百千字节), 通常是一本字典。 PList 没有 具有分拣能力 本身,虽然代码很容易 写来排序它。一个属性列表是 可能是最容易维护的,但是 它将全部加载到内存中 一次。这可能会吃掉很多 设备的内存。

    SQLite 是一个成熟的数据库。 文件大小(在 iPhone 上)为 本质上是无限的。排序 内置功能。查询 和关系表设计是 可能的。性能应该是 和你的任何排序算法一样好 可能会想出一个sqlite数据库, 另一方面,将仅加载 您要求的数据。我不确定如何 您的数据是结构化的,但您可以 很容易创建键值对 使用单个数据库表。

    如果您要存储“大量数据”,那么 您将受益于 sqlite。 特别是如果你要 执行复杂的查询, 提取、搜索和排序 等等。

    【讨论】:

    • 你能解释一下为什么这个答案包含从this和其他答案中明确复制的部分吗?
    【解决方案3】:

    如果要进行搜索、排序等操作,则必须使用 sqlite。在sqlite中我们可以存储大量数据,但在plist中是不可能的。我不知道这之间的性能。

    【讨论】:

      猜你喜欢
      • 2012-06-21
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多