【发布时间】:2022-01-09 13:42:00
【问题描述】:
我正在开发一个包含绘图循环的小型视频游戏,我在使用 MS Edge 时遇到了一种奇怪的行为(但它在 Chrome 上也以另一种方式发生)。
在某个特定时间,我想获取有关像素的数据并使用,只需一次,ctx.getImageData()
它会在这个非常精确的时刻触发 CPU 内存增加(我知道这个函数很昂贵)......但是在循环的所有下一次迭代中,绘制时间急剧增加。
这里是链接:http://millgraphik.alwaysdata.net/cpu-test/
还有代码:http://millgraphik.alwaysdata.net/cpu-test/js/canvas.js
您可以使用 MS Edge 进行测试,在页面加载后立即启动性能记录。 getImageData 在页面加载后大约 3 秒触发。以下是性能测试结果:
绿色,绘画时长
那么绘画时间增加的原因是什么?
【问题讨论】:
-
我已经看到了您的问题,但很难推理。现在你最好做一些实验。我会首先尝试在您调用
ctx.getImageData()时将循环迭代延迟 200 毫秒,以查看油漆如何变化。 -
我尝试了很多东西,包括延迟... :(
标签: javascript loops canvas memory cpu