簡體   English   中英

如何在Swift中加快循環的性能?

[英]How to speed up performance of a loop in Swift?

我只是想知道是否有任何方法可以提高循環速度,或者提供最佳實踐建議,因為我覺得它看起來太糟糕了。

這是代碼:

for (index, _) in filteredArray.enumerate() {
    if index == 0 || index % 4 == 0 {
        let mediaItem = Item()
        mediaItem.id = filteredArray[index + 3]
        let photoURL = NSURL(string: filteredArray[index + 1])
        guard let url = photoURL else {  return  }
        let data = NSData(contentsOfURL: url)
        let finishImage = UIImage(data: data!)
        mediaItem.Photo = finishImage
        mediaItem.orderCount = filteredArray[index + 2]
        mediaItem.UUId = filteredArray[index]
        self.dataSourceItems.insert(mediaItem)
    }
}

嘗試使用dispatch_apply 像這樣:

let iterationsCount = filteredArray.count / 4
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

dispatch_apply(iterationsCount, queue) { i in
    let index = i * 4
    let mediaItem = Item()
    mediaItem.id = filteredArray[index + 3]
    let photoURL = NSURL(string: filteredArray[index + 1])
    guard let url = photoURL else {  return  }
    let data = NSData(contentsOfURL: url)
    let finishImage = UIImage(data: data!)
    mediaItem.Photo = finishImage
    mediaItem.orderCount = filteredArray[index + 2]
    mediaItem.UUId = filteredArray[index]
    self.dataSourceItems.insert(mediaItem)
}

注意,根據您的情況,如果訪問屬性,可能需要1.在閉包中使用self 2.如果您寫入共享內存,請添加一些鎖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM