【发布时间】:2015-10-10 23:00:20
【问题描述】:
我的应用程序 UIKit 存储了 100 个 (100x100) jpeg 文件,假设用作“图案图像”。每张图片的平均大小有时类似于20~40 kb。
我也是 cocos2d-x 的开发者。在 cocos 环境中,我使用plist 来“绑定”每个图像,然后通过plist 剪切它。这是出色的性能和尺寸节省,但据我所知,这在 UIKit 上是不可能的。
所以我的问题是,除了将文件拖放到 XCode 中并照常使用之外,还有更好的方法来存储/提取这些图像以提高磁盘容量和提高性能吗?
【问题讨论】:
-
100 个 100x100 的图像并没有那么多内存。假设全部都加载进去,解码时就是(100 * 100 * 100 * 4)字节的内存,也就是4MB。 UIKit 将处理您的资源的重复数据删除,以及在低内存环境中缓存/释放它们,所以我认为这只是过早的优化。
-
Richard 是对的,因为内存量并不算太差,但如果您真的需要,您可以将这些图像制作成一个单独的精灵,然后使用坐标调用它。我以前用这个网站做 CSS Sprite spritegen.website-performance.org
-
@Cole 这对 iOS 上的性能不利 - 缓存局部性所获得的收益微乎其微,正如我之前提到的 UIKit 使用一些高级缓存技术来确保只有正在使用的图像留在内存中在任何给定时间。此外,超过 1024x1024 的图像在旧设备上的性能非常差(由于纹理缓冲区中的硬件限制,图像必须由 UIKit 平铺)。
-
@Richard 呵呵,我从没想过。我只记得在 CSS 中将它们用于按钮。你知道的越多!
-
@Cole for CSS/web 然而这是一个不同的场景。当您处理网络时(在 HTTP/2.0 之前),您必须为每个包含图标的文件发送单独的请求,从而显着增加您的加载时间(因为 HTTP 标头握手非常延迟,甚至更多TLS 也是如此),所以它被用作内容交付的优化,而不是内容渲染。
标签: ios xcode image performance size