【问题标题】:Smarter way to make a key for lookup更智能的方法来制作查找键
【发布时间】:2016-03-16 13:19:15
【问题描述】:

我有一个过程花费的时间比我想象的要长。当我运行 Instruments 时,它显示我用来为NSDictionary 查找创建密钥的方法大约占用了总时间的 25%。最终结果是,如果我可以优化这个密钥生成,我可以节省几秒钟。字符串生成如下:

[NSString stringWithFormat:@"%ld_%.0f_%.0f_%d%@", (long)zoomLevel, mapPoint.x, mapPoint.y, dataType, suffix];

我觉得解析格式字符串是这里的痛点,但是我不确定如何将这些变量粉碎在一起以创建密钥。

编辑

当给定完全相同的输入时,我需要生成完全相同的密钥。所以没有 UUID、时间戳等。

【问题讨论】:

标签: objective-c


【解决方案1】:

您可以使用sprintf 代替[NSString stringWithFormat:...],后者执行much faster

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 数组时为字符串分配足够的空间。

【讨论】:

  • 此解决方案的速度提高了约 1.6 倍。不错!
猜你喜欢
  • 2022-01-21
  • 2020-01-16
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多