Swift:从磁盘缓存int
对于用户设置的首选项,我有时必须从磁盘读取值。为了避免不必要的(缓慢的)磁盘读取,我缓存了这些值,因此如果应用程序经常访问这些值,它将只是内存访问,而不是存储访问 下面是我近十年来一直在做的一个例子:Swift:从磁盘缓存int,swift,caching,Swift,Caching,对于用户设置的首选项,我有时必须从磁盘读取值。为了避免不必要的(缓慢的)磁盘读取,我缓存了这些值,因此如果应用程序经常访问这些值,它将只是内存访问,而不是存储访问 下面是我近十年来一直在做的一个例子: let DEFAULT_COLUMN_COUNT = 4 var columnCount = -1 func getcolumnCount() -> Int { if(columnCount != -1) { return columnCount
let DEFAULT_COLUMN_COUNT = 4
var columnCount = -1
func getcolumnCount() -> Int {
if(columnCount != -1) {
return columnCount
} else if let count = UserDefaults.standard.object(forKey: "COLUMN_COUNT") as? Int {
columnCount = count
} else {
columnCount = DEFAULT_COLUMN_COUNT
}
return columnCount
}
多年来,我一直在编写类似的算法,但在这一点上,我确信一定有更聪明的方法来处理这个问题
我曾考虑编写一个小包装器,让我传递一个默认值和UserDefaults标识符,但我首先想确定Swift语言中是否已经包含了类似的内容/GitHub上是否有一个这样的小项目,或者我的方法在所有方面是否完全错误-当然这取决于具体的用例,但总体而言,这在性能方面对我来说非常有效:
UserDefaults缓存信息,以避免每次需要默认值时都必须打开用户的默认数据库。当您设置默认值时,它将在进程内同步更改,并异步更改为持久存储和其他进程
因此,看起来您不应该担心“不必要的(缓慢的)磁盘读取”。这很有趣,我将对此进行测试,但您绝对值得一提,谢谢!