性能问题 – 在iOS中的plist vs sqlite

我需要跟踪一些variables并经常保存它们。 我不需要复杂的search和sorting,只需简单的读/写。

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

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

请给我一些提示。

谢谢。

在SQlite中,您可以执行所有与SQL相关的function,如创build,删除…以及存储大量数据。但是在Plist中您可以存储。

Plist和SQLite有不同的用法如下

PList是一种文件格式,用于存储less量的结构数据(less于几百千字节),通常是一个字典。 PList本身并没有sortingfunction,尽pipe可以很容易地编写代码来对其进行sorting。 属性列表可能是最容易维护的,但它会一次加载到内存中。 这可能会吃掉很多设备的内存

SQLite是一个成熟的数据库。 文件大小(在iPhone上)基本上是无限的。 内置sortingfunction。查询和关系表devise是可能的。 性能应该与您可能想到的任何sortingalgorithm一样好。 另一方面,sqlite数据库将只加载你请求的数据。 我不确定你的数据是如何构build的,但是你可以很容易地用一个数据库表创build键值对。 (具有键列和值列的单个表)然后,如果是我,我会编写一个Objective-C类来包装数据库查询,以便我可以编写简单的语句,如:

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

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

从@罗伯特哈维提供的答案在这个以前的SO问题plist或sqlite

PList是一种文件格式,用于存储less量的结构数据(less于几百千字节),通常是一个字典。 PList本身并没有sortingfunction,虽然代码可以很容易地写入sorting它。一个属性列表可能是最容易维护,但它会一次加载到内存中。 这可能会吃掉很多设备的内存。

SQLite是一个成熟的数据库。 文件大小(在iPhone上)基本上是无限的。 内置sortingfunction。查询和关系表devise是可能的。 性能应该与您可能想到的任何sortingalgorithm一样好。另一方面,sqlite数据库将只加载您请求的数据。 我不确定你的数据是如何构build的,但是你可以很容易地用一个数据库表创build键值对。

如果你正在存储“庞大的数据”,那么你将受益于sqlite。 特别是如果你要执行复杂的查询,提取,search和sorting等。

如果你要做search这样的操作,sorting你必须使用sqlite。 在sqlite中,我们可以存储大量的数据,但在plist中是不可能的。我不知道这个之间的性能。