2013-03-11 18 views
13

Die Bitmap Klasse has ein Verfahren copy() mit der Unterschrift unter:Ist eine unveränderliche Bitmap schneller als eine veränderbare Bitmap?

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

Gibt es einen Unterschied in der Leistung zwischen einem wandelbaren und einem unveränderlichen Bitmap?

+2

Ich wäre überrascht, wenn es einen signifikanten Unterschied gibt. –

+0

Ich wäre auch überrascht, aber anders als Code-Verhärtung kann ich mir keinen funktionalen Grund vorstellen, einen über den anderen zu wählen. Das heißt, weil es den Code härtet, wäre es im Allgemeinen besser, ihn unveränderlich zu machen. Irgendwelche Leistungsgewinne, die Sie erhalten, würden gewonnen werden, weil Sie das Wissen haben, dass das Bild sich nie ändern wird. – DeeV

+4

Der Grund für unveränderliche Bitmaps ist, dass sie Ressourcen speichern (wenn Sie ein unveränderliches Bitmap in ein anderes unveränderliches Bitmap kopieren, zeigt der C-Zeiger immer noch auf denselben Speicherort, so dass keine echte Kopie benötigt wird). Alles andere bleibt jedoch für Ihre Frage gleich. Es gibt keine Leistungsänderung, aber wenn Sie sich für Systemressourcen interessieren, sollten Sie möglichst unveränderliche Bitmaps verwenden. Ich erinnere mich, dass Romain Guy einen Artikel darüber geschrieben hat, aber ich kann es nicht finden. – EyalBellisha

Antwort

6

Romain Guy in den Kommentaren beantwortet:

die ursprüngliche Frage zu beantworten: Nein, es gibt keine Leistung ist Unterschied. Es gibt einige Optimierungen, die wir für veränderbare Bitmaps implementieren konnten. Hoffentlich in einer zukünftigen Version :)

-3

Auf Anwendungsebene gibt es immer einen Unterschied zwischen unveränderlichen & veränderbaren Bitmap-Ressourcen.

Sie erhalten immer eine unveränderliche Bitmap aus den Ressourcen. Sie müssen sie nach Bedarf in veränderbare Bitmap konvertieren.

Bitmap Bitmap = BitmapFactory.decodeResource (....); Bitmap veränderbareBitmap = immutableBitmap.copy (Bitmap.Config.ARGB_8888, true);

Also wahrscheinlich muss ein Leistungsproblem in dieser Referenz sein.

+2

Zwei Downvotes und keine Kommentare? "Ja wirklich?" Als ein Benutzer gibt mir das keine Ahnung, ob die Antwort sachlich falsch ist, nur verwirrend für den Wähler oder eine dritte Option. –

+0

Die Antwort ist sachlich falsch. –

+0

falsche Antwort ... bitte wissen, bevor Sie helfen. –

0

Es gibt keinen Leistungsunterschied. Dies wirkt sich nicht auf die Leistung Ihrer App aus. Wenn Sie irgendeine opration wie Rotation usw. ausführen wollen, dann denke ich, die Bitmap wandelbar sein sollte ...

Verwandte Themen