putImageData比drawImage更快吗?

时间:2011-10-11 05:56:11

标签: javascript html5 canvas

我认为putImageData比drawImage更快,但我需要证明它。

我猜这与Flash及其Bitmap和BitmapData类的情况相同。基本上,BitmapData有助于对Bitmap对象中的数据进行非可视化提取,从而可以非常方便快速地对其进行操作。

我猜测在高性能的情况下,例如游戏,从每个图像中提取ImageData(例如,每个精灵)并将其缓存在“资产”字典中是比将精灵自身绘制到更好的解决方案画布一遍又一遍。

有人可以证明这一点吗?

2 个答案:

答案 0 :(得分:8)

我不赞成将此测试放在一起,但您可以清楚地看到使用drawImage()同时使用画布和图像以及此处putImageData()的效果的表现:

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

截至目前,drawImage()putImageData()快得多。最后我听说,这不是故意的,浏览器开发人员正在考虑改善性能差距。

答案 1 :(得分:0)

对于较大的画布,我发现它并没有产生太大的差别,但是putImageData绝对不像复制画布的drawImage那样高效。

以下是我使用的一些测试用例: http://jsperf.com/canvas-size-test-case/3

我最终在整体源画布大小方面遇到了一些性能问题,无论我实际复制的数据大小如何。