【发布时间】:2016-03-16 13:19:15
【问题描述】:
我有一个过程花费的时间比我想象的要长。当我运行 Instruments 时,它显示我用来为NSDictionary 查找创建密钥的方法大约占用了总时间的 25%。最终结果是,如果我可以优化这个密钥生成,我可以节省几秒钟。字符串生成如下:
[NSString stringWithFormat:@"%ld_%.0f_%.0f_%d%@", (long)zoomLevel, mapPoint.x, mapPoint.y, dataType, suffix];
我觉得解析格式字符串是这里的痛点,但是我不确定如何将这些变量粉碎在一起以创建密钥。
编辑
当给定完全相同的输入时,我需要生成完全相同的密钥。所以没有 UUID、时间戳等。
【问题讨论】:
-
在您的字符串中添加以毫秒为单位的时间有用吗?所以它会是独一无二的
-
使用
NSUUID。这就是它的用途。 -
您需要能够重新生成此密钥还是只需要它是唯一的?你用钥匙做什么?你能以不同的方式构建数据吗?
-
手头没有现成的解决方案,但请检查How to generate a hash code from three longs 和Mapping two integers to one, in a unique and deterministic way,您也可以在谷歌上搜索“哈希三个数字”。
标签: objective-c