2013-03-11 54 views
13

Bitmaphas的方法copy()與下面的簽名:不可變的Bitmap比可變的更快嗎?

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

有一個可變和不可變Bitmap之間的性能差異?

+2

如果有重大差異,我會感到驚訝。 – 2013-03-11 20:20:11

+0

我也會感到驚訝,但除了代碼強化之外,我無法想象一個功能性的理由來選擇另一個。這就是說,因爲它使代碼變得更加堅固,所以將它變爲不可變的通常會更好。你獲得的任何性能收益將會獲得,因爲你擁有圖像永遠不會改變的知識。 – DeeV 2013-03-11 20:29:45

+4

不變的位圖的原因是它們爲你節省資源(當你將不可變的位圖複製到另一個不可變的位圖時,C指針仍然指向相同的位置,所以不需要真正的副本)。但是,其他一切都保持不變,因此對於您的問題,不會有性能改變,但如果您關心繫統資源,則應儘可能使用不可變的位圖。我記得羅曼蓋伊寫了一篇關於它的文章,但我找不到它。 – EyalBellisha 2013-03-12 09:10:23

回答

6

Romain Guy回答的評論:

要回答原來的問題:沒有,沒有什麼表現 區別。雖然我們可以爲 可變位圖實現一些優化。希望在未來的版本:)

-3

在應用程序級別上,不可變的&可變的位圖資源之間始終存在差異。

您總是從資源中獲得不可變的位圖。您需要根據需要將它們轉換爲可變位圖。

位圖Bitmap = BitmapFactory.decodeResource(....); 位圖mut​​ableBitmap = immutableBitmap.copy(Bitmap.Config.ARGB_8888,true);

因此可能在此參考文獻中必須存在性能問題。

+2

兩個downvotes和沒有評論?真?作爲一個用戶,我不知道答案是否是事實錯誤,只是讓選民感到困惑,或者是第三種選擇。 – 2013-09-25 11:58:56

+0

答案是事實錯誤的。 – 2013-11-01 10:22:52

+0

錯誤的答案..請在你幫忙之前知道。 – 2014-08-06 11:12:29

0

沒有性能差異。這不會影響你的應用程序的性能。如果要執行像旋轉等任何調度研究那麼我認爲應該位是可變......