我的流程花费的时间比我想象的要长。当我运行Instruments时,它表明我用来为NSDictionary
查找创建密钥的方法大约占总时间的25%。最终的结果是,如果我可以优化这个密钥生成,我可以节省几秒钟。字符串生成如下:
[NSString stringWithFormat:@"%ld_%.0f_%.0f_%d%@", (long)zoomLevel, mapPoint.x, mapPoint.y, dataType, suffix];
我觉得解析格式字符串是这里的难点,但我不确定如何将这些变量粉碎在一起来创建密钥。
修改
当给出完全相同的输入时,我需要生成完全相同的键。所以没有UUID,时间戳等
答案 0 :(得分:2)
您可以使用sprintf
代替执行much faster的[NSString stringWithFormat:...]
。
char cString[256];
sprintf(cString, "%ld_%.0f_%.0f_%d%s", (long)zoomLevel, mapPoint.x, mapPoint.y, dataType, suffix.UTF8String];
NSString *string = [[NSString alloc] initWithUTF8String:cString];
请确保在声明char
数组时为字符串分配足够的空间。