【发布时间】:2017-08-09 00:22:30
【问题描述】:
我想实现一个Dictionary,其中的键是String。
字符串键是通过字面连接Int 的数组生成的(它基本上是一个地址)。
即地址 [0, 10, 32] 的哈希值为“01032”。
值永远不会超过 255——事实上我可以使用 [UInt8]。
我在 XCode 中做了一个小测试,并获得了不错的性能。 0.036 秒:
func testPerformance() {
let address = [10, 176, 12] //should become "1017612"
self.measure {
for _ in 0..<10_000 {
let key = "\(address[0])\(address[1])\(address[2])"
}
}
}
我的问题:是否有更轻量级的 String 类型或方法可以比这更快地完成我想要的操作?据我了解,Swift 的 String 类是相当重量级的,在下面添加了各种字符信息:
【问题讨论】:
-
那么你的实际代码在哪里?
-
已更新。谢谢。
-
如果您正在寻找性能,为什么要使用计算字符串作为字典键?这些地址可以多长时间? (它们只是表示为 4 个 UInt8 的数组的 IPv4 地址吗?)
-
为什么不使用实现 Hashable 的结构体?
-
或者为什么不使用 Ints 作为键??
标签: swift string performance