【发布时间】:2019-02-07 21:50:12
【问题描述】:
我有以下担忧。我有一段代码我非常关心性能(老实说,我正在努力使其尽可能优化)。
我有这样的事情:
NSArray *array = [someInstance getArray];
if (something) {
NSMutableArray *marray = [array mutableCopy];
[marray removeObject:someObject];
[marray insertObject:someObject atIndex:0];
array = marray;
}
目标是将someObject 移动到数组的开头——非常简单。然而,重点在别处。方法[someInstance getArray]返回NSArray *,但在内部它也使用NSMutableArray:
- (NSArray *)getArray {
NSMutableArray *array = [NSMutableArray new];
// do some stuff here
return array;
}
我试图让我的所有接口都返回不可变集合。但在上述情况下,我正在考虑从该规则中创建一个例外,因为我非常关心这段代码的性能。所以我可以把getArray方法改成如下:
- (NSMutableArray *)getArray {
NSMutableArray *array = [NSMutableArray new];
// do some stuff here
return array;
}
然后把我的超高效代码改成如下:
NSMutableArray *array = [someInstance getArray];
if (something) {
[array removeObject:someObject];
[array insertObject:someObject atIndex:0];
}
上述更改在性能方面是否有意义?
【问题讨论】:
-
你告诉我们。使用 Instruments 并对其进行测试。
-
如果 Instruments 没有挂,我不会问 :)
-
您在“优化”却无法衡量?不要那样做。没有什么好事。
-
任何人都可以回答而不是问我为什么要问?老实说,我不想写一个关于我现在面临的 Instruments 问题的完整故事。我已经用 Instruments 完成了大部分工作,但现在它们不起作用(不知道为什么),这是我最后一个不明显的担忧。所以这就是我问的原因。
-
我对您在使用 Instruments 时遇到的问题表示同情。我的意思是,假设您做出了我建议(或其他人)的更改。你怎么知道它是否有所改善?
标签: objective-c performance nsmutablearray nsarray