讨论一个关于js,canvas,setTimeout的问题.

本文讨论了一种关于JS和Canvas的优化方案:将updateLogic和drawCanvas分别放入两个setTimeout中执行,以提高FPS。文中提出了对该优化方案效果的质疑,并邀请读者一起探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想和大家讨论一个关于js,canvas,setTimeout的问题.

看一段伪代码:


function mainLoop(){

updateLogic(); //该方法进行逻辑运算,处理要绘制的"图形"的坐标大小等.
drawCanvas(); //该方法在一个canvas上绘制出"图形".

setTimeout( mainLoop, 30); //30毫秒后 重复以上动作.
}

setTimeout( mainLoop, 30);



这段代码很好理解 ,每30毫秒更新一下图形的状态 并绘制.
它也是很多游戏或者是动画程序的主干.

网上看到有人提出一种优化方案.
方案中建议 将此代码中的
updateLogic 和 drawCanvas 分别放到两个 setTimeout里去执行 ,
说这样能够优化程序的性能, 使其能够得到更高的FPS(每秒钟显示的帧数).

我觉得这种优化的效果 微乎其微 甚至到底会不会起到真正的优化 我个人也持怀疑态度.

各位爱好js的同学们 大家一起讨论一下

你们是怎么看的?

补充: 大家在讨论时 要注意一下 canvas对象的特殊性(可以简单参考一下[url="http://fins.iteye.com/blog/622493"]这里[/url]. 如果把drawCanvas换成普通的运算函数 这个问题就没啥可讨论的了.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值