在 iOS 7.1 上从 JPEG NSData 创建 UIImage 很慢

Evg*_*nii 1 uiimage ios swift

在运行 iOS 7.1.2 的 iPhone 5 上,此操作需要 700 毫秒。

UIImage(data: data) 
Run Code Online (Sandbox Code Playgroud)

data 是包含 JPEG 图像的 NSData,400x300px 90K。

  • 即使在单独的线程中运行,它也会减慢 UI。
  • 仅适用于 JPEG,PNG 没问题。
  • 仅在第一次通话期间发生。
  • 仅在 iOS 7.1.2 上发生。模拟器中的 iOS 8 很好。

我怎样才能让它加载得更快,或者至少不会阻塞 UI?

演示应用程序在这里:https : //github.com/exchangegroup/demo-image-loader-benchmark-swift

更新

只有当我从 Xcode启动设备上的应用程序时才会发生这种减速。当从设备本身启动时,它运行得更快,大约为 20 毫秒。第一次运行仍然比后续运行慢得多,后者大约为 1ms。

Mat*_* S. 5

这在很大程度上取决于加载的图像的大小、原始压缩是什么等。

一般来说,你永远不应该基于 Xcode 的调试构建来假设性能,如果你附加了调试器,那就是三重。如果您想查看某个东西的实际运行速度,您需要使用项目随附的 Release 配置文件构建并安装到设备上,然后在不附加调试器的情况下运行构建。发布构建通常至少快 1 个数量级,假设您遵循了标准程序,例如包装 NSLog,因此它不会将日志输出到控制台以进行发布构建。