我比较了SDWebImage和PINRemoteImage的速度


概述

我们比较了SDWebImage和PINRemoteImage,它们是iOS上常用的异步图像下载库。

我知道

SDWebImage被用于各种应用程序,但是今天我知道了PINRemoteImage。我不确定哪个更好,所以我进行了基准测试。

时间和电池电量不足,因此我将对其进行简要总结。

结果

PINRemoteImage更快。

如下所述,SDWebImage需要15毫秒来完成基准测试过程,而PINRemoteImage则需要14毫秒。这是一个细微的差异,但是PINRemoteImage获胜。

另外,内存使用率异常低。 Xcode的内存使用情况可能无法准确测量,但是我暂时没有使用任何内存。

基准测试方法

我用imagemagick生成了500张图像。

我启动了使用nodejs在本地制作映像的服务器,并将其分发。

用于基准测试的应用程序在模拟器上运行。

应用程序将下载四次之前生成的500张图像,并输出所花费的时间。

总共下载了2000张图像,但是由于该库实际上已将其缓存,因此将不会从第501张图像进行网络通信。

源代码

用于基准测试的项目在此处发布。

https://github.com/mironal/AsyncImageBench

该文件全部与基准有关。 https://github.com/mironal/AsyncImageBench/blob/master/AsyncImageBench/ViewController.swift

详细结果

時間, 終了時のメモリ使用量

SDWebImage

  • 15.459992945194244 ms,305.4 MB
  • 15.180207014083862 ms,305.9 MB
  • 14.194296956062317 ms,306.4 MB
  • 15.525336980819702毫秒,305.5 MB
  • 15.591868042945862 ms,305.4 MB

当不执行缓存时,屏幕非常闪烁。情况已上传到https://youtu.be/8Xu9O-7AmLU。

附录:通过指定SDWebImageDelayPlaceholder,它不再闪烁。

PINRemoteImage

  • 13.661346018314362毫秒,34.7 MB
  • 13.862448990345001 ms,35.7 MB
  • 14.107374012470245 ms,35.8 MB的
  • 13.682069957256317 ms,34.4 MB的
  • 15.576615989208221 ms,35.1 MB

我没有像SDWebImage那样闪烁。 https://www.youtube.com/watch?v=T0jDrUqnlxU

摘要

  • PINRemoteImage更快并且使用了更少的内存
  • PINRemoteImage可供选择
  • 我想切换使用SDWebImage的项目

    • API接口几乎相同,因此迁移似乎很容易