【问题标题】:Is an immutable Bitmap faster then a mutable one?不可变位图比可变位图更快吗?
【发布时间】:2013-03-11 18:04:10
【问题描述】:

Bitmaphas 一个方法 copy(),签名如下:

public Bitmap copy(Bitmap.Config config, boolean isMutable)

可变和不可变 Bitmap 之间是否存在性能差异?

【问题讨论】:

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

标签: android bitmap mutable


【解决方案1】:

Romain Guy 在 cmets 中回答:

回答原来的问题:不,没有表现 不同之处。我们可以实现一些优化 可变位图。希望在未来的版本中:)

【讨论】:

    【解决方案2】:

    没有性能差异。这不会影响您的应用程序的性能。如果您想执行任何操作,如旋转等,那么我认为位图应该是可变的......

    【讨论】:

      【解决方案3】:

      在应用程序级别,不可变和可变位图资源之间始终存在差异。

      您总是从资源中获得不可变的位图。您需要根据需要将它们转换为可变位图。

      位图位图 = BitmapFactory.decodeResource(....); 位图 mutableBitmap = immutableBitmap.copy(Bitmap.Config.ARGB_8888, true);

      因此,此参考文献中可能存在性能问题。

      【讨论】:

      • 两次投反对票,没有 cmets?真的吗?作为用户,这让我不知道答案是否实际上是错误的,只是让选民感到困惑,或者是第三种选择。
      猜你喜欢
      • 2015-08-06
      • 1970-01-01
      • 2012-10-18
      • 2017-05-21
      • 2012-04-07
      • 1970-01-01
      • 2012-09-12
      • 2021-07-01
      • 2011-05-19
      相关资源
      最近更新 更多