Updated on July 13, 2019
- Nuke 8.0 · Swift
- SDWebImage 5.0.6 · Objective-C
- PINRemoteImage 2.1.4 · Objective-C
- Kingfisher 5.7.0 · Swift
- AlamofireImage 3.5.2 · Swift
Image loading frameworks are often used in table and collection views with large number of cells. It's important that they perform well to achieve butterly smooth scrolling. This benchmark tests methods which are used on the main thread when cells are created:
Nuke.loadImage(with: url, into: view)
view.kf.setImage(with: url)
view.sd_setImage(with: url)
view.pin_setImage(from: url)
view.af_setImage(withURL: url)
The results (higher is better):
Please keep in mind that this performance test makes for a very nice looking chart, but in practice, the difference between Nuke and say SDWebImage is not going to be that dramatic. Unless you app drops frames on a table or a collection view rendering, there is no real reason to switch.