【发布时间】:2020-12-22 18:42:51
【问题描述】:
我有一个程序可以存储 100.000 个文件及其信息。通常类定义是这样的:
class DSPhotoFile: NSObject, NSCopying, Comparable {
let key: Int // may I need an numeric ID? Easy and fast
let initUrl : URL // initial, never changed (could also be used as key)
// derived data from filepath
// string parts
var fullpath = String() // "/rootfolder/sub/sub2/pic1234.jpg"
var path = String() // "/rootfolder/sub/sub2" (path without tailing /)
... // 12345678901234567890 12345678901
}
我想节省内存,但不是不惜一切代价。 第一:如何动态计算此定义的实例使用的字节数?有一些字符串成员是动态的!所以我需要完整的占用空间,包括所有子类型。
如果需要,我的下一个想法是只存储一个 Int 作为后缀或前缀的长度。例如。 path 是 fullpath 的前 20 项。如果我存储 Int16 “20”,它需要 2 个字节,然后我将成员路径计算为 fullpath.prefix(20)。这也可以对依赖另一个常量字符串的所有其他成员进行。 关于 String 与 String.prefix 的性能差异的任何想法?有什么建议吗?
【问题讨论】:
标签: swift performance memory