Jan*_*edi 2 performance cocoa objective-c nsarray ios
我正在为一些图像开发一个简单的iOS缓存系统.我需要跟踪UIImage本身及其标识符.现在,我试图找出哪种方法可以更快/更有效地访问正确的缓存图像.
选项1:
for (CachedImage* image in [cachedImageArray]
{
if ([[image identifier] isEqualToString:@"id_12345"]
{
// use that image
}
}
Run Code Online (Sandbox Code Playgroud)
选项2:
UIImage* imageToRetrieve = [cachedImagesDictionary objectForKey:@"id_12345"
Run Code Online (Sandbox Code Playgroud)
使用一种方法或另一种方法有什么好处吗?如果是这样,它是不可忽视的吗?谢谢.
字典很可能会更快,因为它们会使用一些散列算法来提高检索效率(通常O(1)代替O(n)).如果缓存中的元素数量很大,它将是不可忽略的.
计算复杂性
对于任何实现,当前和未来,字典中值的访问时间保证最差为O(lg N),但通常为O(1)(恒定时间).插入或删除操作通常也是恒定时间,但在某些实现中最坏的情况下是O(N*lg N).通过密钥访问值比直接访问值更快(如果有任何此类操作).字典将比具有相同数量的值的数组使用更多的内存.
小智 5
使用一种方法或另一种方法有什么好处吗?
是.
UIImage *imageToRetrieve = [cachedImagesDictionary objectForKey:@"id_12345"];
Run Code Online (Sandbox Code Playgroud)
是更可读.
(哦,你的意思是表现?不要担心.过早的优化是几乎所有邪恶的根源.)
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |