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/