读取 NSUserDefaults 与变量的速度
Speed of reading NSUserDefaults vs variables
我有一个应用程序,它经常调用变量。而这些变量存储在NSUserDefaults
.
我想知道 NSUserDefaults
存储在哪里?
如果我直接调用 NSUserDefaults
而不是使用变量。
哪个更快?变量或 NSUserDefaults
。因为使用变量存储NSUserDefaults
会是占用内存较多的原因
NSUserDefaults
将其数据保存在磁盘上,因此在某些时候它必须从磁盘加载该数据才能将其存储在内存中。当您告诉它 synchronize
.
时,它需要将其写回磁盘
一旦进入内存,它会将其存储在类似字典的容器中(可能NSMutableDictionary
)。
与直接读取变量相比,从两个磁盘读取非常昂贵,与读取变量相比,从字典读取中等昂贵变量。
Reading/writing 从长远来看,它的变量要快得多。
NSUserDefaults
与代码中的变量有不同的用例。
数据被打包到 plist 表示中,需要存储到磁盘(好吧,至少在同步时),或从磁盘读取(或从缓存,或 Apple 认为合适的其他实现细节) .在任何情况下,使用默认值通常都比使用简单变量慢得多。用户默认值越大,影响就越大,因为它很可能每次都会 store/read all。如果它在您的用例中很重要是一个我们无法回答的不同问题。
使用适合您需要的方法:NSUserDefault
在应用程序启动之间保留设置,以及用于正常操作的变量。将设置缓存在局部变量中并只持久化更改(也许不是每次更改时)都没有错。
如果您担心将数据保存在变量中会占用内存,那么您应该改用 CoreData。您可能还认为 NSUserDefaults 会占用内存:-)
NSUserDefaults 是持久 存储。如果你使用得当,数据将在你的应用程序崩溃后再次存在。将它用于下次运行应用程序时要记住的事情。将变量用于可以在您的应用程序下次启动时重新开始的事物。
我有一个应用程序,它经常调用变量。而这些变量存储在NSUserDefaults
.
我想知道 NSUserDefaults
存储在哪里?
如果我直接调用 NSUserDefaults
而不是使用变量。
哪个更快?变量或 NSUserDefaults
。因为使用变量存储NSUserDefaults
会是占用内存较多的原因
NSUserDefaults
将其数据保存在磁盘上,因此在某些时候它必须从磁盘加载该数据才能将其存储在内存中。当您告诉它 synchronize
.
一旦进入内存,它会将其存储在类似字典的容器中(可能NSMutableDictionary
)。
与直接读取变量相比,从两个磁盘读取非常昂贵,与读取变量相比,从字典读取中等昂贵变量。
Reading/writing 从长远来看,它的变量要快得多。
NSUserDefaults
与代码中的变量有不同的用例。
数据被打包到 plist 表示中,需要存储到磁盘(好吧,至少在同步时),或从磁盘读取(或从缓存,或 Apple 认为合适的其他实现细节) .在任何情况下,使用默认值通常都比使用简单变量慢得多。用户默认值越大,影响就越大,因为它很可能每次都会 store/read all。如果它在您的用例中很重要是一个我们无法回答的不同问题。
使用适合您需要的方法:NSUserDefault
在应用程序启动之间保留设置,以及用于正常操作的变量。将设置缓存在局部变量中并只持久化更改(也许不是每次更改时)都没有错。
如果您担心将数据保存在变量中会占用内存,那么您应该改用 CoreData。您可能还认为 NSUserDefaults 会占用内存:-)
NSUserDefaults 是持久 存储。如果你使用得当,数据将在你的应用程序崩溃后再次存在。将它用于下次运行应用程序时要记住的事情。将变量用于可以在您的应用程序下次启动时重新开始的事物。