Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从画布上画出来要花多少时间?_Javascript_Html_Canvas - Fatal编程技术网

Javascript 从画布上画出来要花多少时间?

Javascript 从画布上画出来要花多少时间?,javascript,html,canvas,Javascript,Html,Canvas,我知道HTML5游戏开发中最昂贵的操作之一就是在画布上画画。但是,在它之外画图像呢?那有多贵?当画布是100×100像素,我尝试在(1000,1000)处绘制图像时,会发生什么情况?检查精灵坐标以确保其位于画布内是否会提高渲染效率?如果图形不在屏幕上,您需要自己执行此检查并跳过绘制。 也就是说,一些浏览器在某些情况下会对此进行优化。不久前,我在IE9性能分析器上写文章时发现,如果图像超出范围,IE9将优化绘制。转换矩阵可能必须是该优化工作的标识,并且无论哪种方式,您都不应该依赖浏览器来完成 总是

我知道HTML5游戏开发中最昂贵的操作之一就是在画布上画画。但是,在它之外画图像呢?那有多贵?当画布是100×100像素,我尝试在(1000,1000)处绘制图像时,会发生什么情况?检查精灵坐标以确保其位于画布内是否会提高渲染效率?

如果图形不在屏幕上,您需要自己执行此检查并跳过绘制。

也就是说,一些浏览器在某些情况下会对此进行优化。不久前,我在IE9性能分析器上写文章时发现,如果图像超出范围,IE9将优化绘制。转换矩阵可能必须是该优化工作的标识,并且无论哪种方式,您都不应该依赖浏览器来完成

总是检查

编辑:您可以运行此简单测试以查看:

看起来Chrome和Safari肯定会对其进行优化,至少在简单的情况下是这样,firefox在这些测试中并不是真的

,我使用的是谷歌Chrome 21.0.1180.57版

我做了一个小提琴来测试这种情况。。。您可以在这里查看:

我已经运行了1000000次测试,这是我得到的数据:

在画布内渲染图像持续了2399毫秒
在画布外渲染图像持续了888毫秒

这意味着在画布外部绘制确实需要一些时间,大约是在画布内部渲染所需时间的37%

结论:最好在渲染前检查图像是否在画布内。

但是,当然,我想知道有多好。。。所以,我做了另一个测试。当然,这一次,我实现了边界检查,并得到只需3毫秒“渲染”画布外的图像1000000次。这比简单地在外部渲染要好29600%


您可以在这里看到这些测试:。

我认为这是具体的实现,但不执行这样的检查是疯狂的。我会在有时间时自己检查,然后回答问题。同时,也许有人已经掌握了数据。。。