ios - dispatch_once 对简单的 NSArray 有帮助吗?

标签 ios objective-c nsarray grand-central-dispatch

dispatch_once

+ (NSArray *)titles
{
    static NSArray *_titles;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _titles = @[@"Your Move",
                    @"Their Move",
                    @"Won Games",
                    @"Lost Games",
                    @"Options"];
    });
    return _titles;
}

简单

+ (NSArray *)titles
{
     return @[@"Your Move",
              @"Their Move",
              @"Won Games",
              @"Lost Games",
              @"Options"];
}

哪个最快?编译器是不是很聪明?对于字符串,将它们包装在 dispatch_once ( NSString – static or inline? Is there any performance gains? ) 中没有性能提升。所以这一切都归结为是否每次都分配了这个数组,对吧?

最佳答案

问题是,这段代码将多久执行一次。如果它是每秒几千次,那可能会很重要,因为每次运行都会节省几毫秒。但从标题来看,我预计它会偶尔被访问,也许每 10 分钟一次。如果将几毫秒与 600 秒进行比较,您会得到非常小的、几乎不存在的改进。

这将是微观优化。

相反,您应该在 2 种情况下进行优化:在运行时,您发现需要优化,并且您能够识别一个代码块,如果对其进行优化,将会给您带来巨大的改进。要找到这些,请使用 Instruments。

关于ios - dispatch_once 对简单的 NSArray 有帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28609296/

相关文章:

android - 在网络服务器上存储 Gmail 电子邮件 : Acceptable or privacy issue?

ios - UIPasteboard无法多次复制带有过期时间的文本

ios - UI 测试失败 - 未找到 MenuItems 的匹配项

objective-c - Objective - C,在 UIImageView 中显示图像序列的最快方法

iphone - 如何知道核心动画何时完成?

iphone - 计算 UIScrollView 的 minimumZoomScale

iphone - 如何删除 NSArray 中字符串的前导和尾随空格?

ios - 如何在另一个 View 上方显示 PickerView

objective-c - 使用 IBOutletCollections

ios - 从plist中选择一个随机字符串,并将其显示在文本字段中