【发布时间】:2014-12-24 01:23:39
【问题描述】:
我有 2 个数组,1 个是主数组 (bookArray),另一个是更新列表 (stockBooksArray)。我使用下面的循环使用两个数组中都存在的唯一记录 (isbn) 将新数据导入到浪费数组中。
有没有办法提高下面循环的性能?
更新数组可以包含与主节点不同的计数,有时更多,有时更少。
for i in 0...stockBooksArray.count {
let StockFiltered = stockBooksArray.filter{$0.isbn == bookArray[i].isbn}
if StockFiltered.count != 0 {
bookArray[i].stockAmount = StockFiltered[0].Stock
bookArray[i].unitCost = StockFiltered[0].Cost
bookArray[i].dues = StockFiltered[0].dues
bookArray[i].stockRRP = StockFiltered[0].RRP
}
}
谢谢, 安东尼
【问题讨论】:
-
是否存在测量性能问题?如果不是简单的节拍复杂但稍微快一点,也不会明显更快。 “过早的优化是万恶之源”——Donald Knuth.
-
在旧设备上完成大约需要 5-6 秒,在最新 (A8) 设备上需要 2 秒。只是想让它像发布时发生的排序一样快。
-
如果
stockBooksArray有bookArray没有的元素会怎样?如果bookArray有stockBooksArray没有的元素怎么办?简单的作业可以吗? -
@Zaph "这不是过早的优化;它是在避免无端的悲观。" (Herb Sutter,Andrei Alexandrescu “C++ 编码标准”)
-
是的,直到提供时间后才知道。