【发布时间】:2013-03-11 18:04:10
【问题描述】:
Bitmap 类 has 一个方法 copy(),签名如下:
public Bitmap copy(Bitmap.Config config, boolean isMutable)
可变和不可变 Bitmap 之间是否存在性能差异?
【问题讨论】:
-
如果有显着差异,我会感到惊讶。
-
我也会感到惊讶,但除了代码强化之外,我无法想象选择其中一个的功能性理由。也就是说,因为它强化了代码,所以通常最好让它不可变。您获得的任何性能提升都会获得,因为您知道图像永远不会改变。
-
不可变位图的原因是它们可以节省资源(当您将不可变位图复制到另一个不可变位图时,C 指针仍指向同一位置,因此不需要真正的副本)。但是,其他所有内容都保持不变,因此对于您的问题,没有性能变化,但是如果您关心系统资源,则应尽可能使用不可变位图。我记得 Romain Guy 写过一篇关于它的帖子,但我找不到。
-
@androidcompile Bitmap.copy() 将复制位图的内容,它们不指向同一个存储(您从中复制的位图可能是可变的。)您所描述的是什么我们为 Drawables 做的。
-
回答原来的问题:不,没有性能差异。不过,我们可以为可变位图实现一些优化。希望在未来的版本中:)