Ist putImageData schneller als drawImage?
Ich denke putImageData ist schneller als die Methode drawImage, aber ich brauche, um es zu beweisen.
Ich denke, es ist der gleiche Fall wie mit Flash und seine Bitmap-und BitmapData-Klassen. Grundsätzlich BitmapData ermöglicht eine nicht-visuelle Extraktion der Daten in ein Bitmap-Objekt, das ermöglicht eine sehr einfache und schnelle manipulation von es.
Ich vermute, dass in der high-performance-Fällen, wie Spiele, extrahieren der Bilddaten aus jedem Bild (zum Beispiel jede sprite) und Cache es in einer "assets" - Wörterbuch ist eine bessere Lösung als das zeichnen der sprites, die sich selbst auf der Leinwand immer und immer wieder.
Könnte jemand beweisen?
- Auch, putImageData nicht funktionieren, wenn die gleichen Ursprungs-Polizei unterbrochen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme keinen Kredit für die Umsetzung dieser test zusammen, aber man kann deutlich sehen, die Leistung der mit
drawImage()
mit einer Leinwand und ein Bild sowie die Leistung vonputImageData()
hier:http://jsperf.com/canvas-drawimage-vs-putimagedata/3
Wie der jetzt
drawImage()
ist viel schneller alsputImageData()
. Letzte, was ich hörte, war dies nicht beabsichtigt, und die browser-Entwickler waren auf der Suche nach Verbesserung der performance-Lücke.drawImage()
ist immer noch am schnellsten mit der weit.Für größere Leinwände, die ich fand, dass es nicht so viel Unterschied, aber putImageData ist definitiv nicht so performant wie drawImage für das kopieren von Gemälden.
Hier sind einige Testfälle, die ich verwendet habe:
http://jsperf.com/canvas-size-test-case/3
Habe ich am Ende mit einige performance-Probleme mit dem gesamten source-Leinwand-Format ist, unabhängig von der Größe der Daten bin ich eigentlich kopieren.