【发布时间】:2015-05-26 17:25:03
【问题描述】:
我正在从存储在设备上的用户完整照片集(可能数以千计)创建数据源。
对于每个资产,我需要:
- 网址
- 纬度
- 经度
- 时间戳
当视图加载时,我将枚举所有资产并为每个资产存储这 4 条数据。我想知道安排所有这些数据的选项之间是否存在显着差异。例如:
- 创建 1 个数组,数组中的每个对象都包含一个包含 4 个键值对的字典。
对比
- 创建 1 个数组,仅包含 URL 字符串。创建 3 个额外的字典,1 个将每个 URL 字符串映射到纬度,1 个将每个 URL 字符串映射到经度,1 个将每个 URL 字符串映射到时间戳。
对比
- 与 #1 相同,但不是将字典添加到数组中,而是添加从 NSObject 子类化并包含 4 个属性的自定义类的实例。
创建或读取这些集合所需的时间是否存在显着差异(假设有数千个对象)?谢谢。
【问题讨论】:
-
"时间是否有显着差异" 两者都试试。使用仪器。找出。不要过早优化; 事实上优化。
-
选择正确的数据结构取决于您的需要。您将对这些信息执行哪些操作?我同意@matt 的评论,选择最简单的变体 1 并测量。
-
也许您应该创建一个具有 3 个属性 url、时间戳、位置的 CustomObject 并将此对象存储在一个数组中。(如果您不想将经度和纬度存储为一个点,则为 4 个)或者您指定仅从相册加载特定图像的搜索逻辑
-
尽可能写出最简单最清晰的代码。如果存在性能问题,请测量并纠正。引用:Kent Beck:“做最简单的事情,可能会奏效”,C. A. R. Hoare:“过早的优化是编程中万恶之源。”
-
我可以尝试两种方法并进行测量,但我希望了解为什么一种方法可能会先验地更可取。但是,仍然感谢您指出常识。
标签: ios