PutImageData быстрее, чем drawImage? - PullRequest
6 голосов
/ 11 октября 2011

Я думаю, что putImageData быстрее, чем drawImage, но мне нужно это доказать.

Полагаю, это тот же случай, что и с Flash и его классами Bitmap и BitmapData.По сути, BitmapData облегчает невизуальное извлечение данных в объекте Bitmap, что позволяет очень легко и быстро манипулировать им.

Я предполагаю, что в высокопроизводительных случаях, таких как игры, извлечениеImageData из каждого изображения (например, каждого спрайта) и кэширование его в словаре «ресурсов» - лучшее решение, чем многократное рисование самих спрайтов на холсте.

Может кто-нибудь доказать это?1007 *

Ответы [ 2 ]

8 голосов
/ 11 октября 2011

Я не возьму на себя ответственность за создание этого теста, но вы можете четко увидеть эффективность использования drawImage() с холстом и изображением, а также производительность putImageData() здесь:

http://jsperf.com/canvas-drawimage-vs-putimagedata/3

На данный момент drawImage() намного быстрее, чем putImageData().Последнее, что я слышал, это не было задумано, и разработчики браузеров пытались улучшить разрыв в производительности.

0 голосов
/ 27 сентября 2013

Для больших полотен я обнаружил, что это не имеет большого значения, но putImageData определенно не так эффективен, как drawImage для копирования холстов.

Вот несколько тестовых случаев, которые я использовал: http://jsperf.com/canvas-size-test-case/3

У меня действительно были некоторые проблемы с производительностью общего размера исходного холста, независимо от размера данных, которые я на самом деле копирую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...