两个JavaScript定时器与一个定时器相比,为了性能,是否值得放弃一个?
在我正在构建的一个web应用程序中,每一秒钟有两个松散相关的代码在两个独立的计时器中运行 我希望优化Javascript,是否值得将这两个计时器合并为一个计时器,或者这只是一个简单的问题 实际上,我是否打算通过将两个1秒的间隔合并为一个1秒的间隔来提高性能(考虑到我们不知道访问者正在运行哪种类型的系统) 据我所知,JavaScript是单线程的,所以发生的事情越多,这些事情就会堆积起来,阻止其他事情发生(特别是计时器)。我只是不知道每秒运行一个微不足道的计时器是否是个问题 将两个计时器分开的原因纯粹是代码可读性,这在服务器端很好,您可以控制硬件,但我不知道访问者将运行哪种浏览器或硬件两个JavaScript定时器与一个定时器相比,为了性能,是否值得放弃一个?,javascript,Javascript,在我正在构建的一个web应用程序中,每一秒钟有两个松散相关的代码在两个独立的计时器中运行 我希望优化Javascript,是否值得将这两个计时器合并为一个计时器,或者这只是一个简单的问题 实际上,我是否打算通过将两个1秒的间隔合并为一个1秒的间隔来提高性能(考虑到我们不知道访问者正在运行哪种类型的系统) 据我所知,JavaScript是单线程的,所以发生的事情越多,这些事情就会堆积起来,阻止其他事情发生(特别是计时器)。我只是不知道每秒运行一个微不足道的计时器是否是个问题 将两个计时器分开的原因
谢谢。如果性能确实存在问题,您可以创建一个计时器,例如,使用该计时器调用两个函数:
function update()
{
A(); //Do your first task
B(); //Do the second
setTimeout("update()", 1000);
}
update();
但是,您如何确定瓶颈是否在此计时器内?首先尝试测量,不要优化应用程序的错误部分 就可以完成的操作总数而言,不,不会有可测量的差异。然而,保留多个计时器可能会带来明显的性能优势。在单个计时器迭代中同步运行的代码越多,所有DOM更新和某些类型的用户交互“暂停”的时间就越长。通过将这些计时器拆分为多个计时器,您可以在计时器迭代之间进行其他更新,因此用户可以获得“更平滑”的体验
不过,在这种情况下,感知性能可能也不会有什么不同,所以我会以更简单的代码组织方式进行操作。我敢打赌,您会通过消除JS级别的时钟处理来提高性能。您肯定不会降低性能,而且,只要运行一个计时器,我认为您就可以提高代码的可维护性(如果不是可读性的话)。在我现在正在开发的应用程序中,我有一个计时器来处理三个任务:一种特殊的滚动,改变大约300个单元格的背景图像,检查是否该刷新页面,如果是的话,发出AJAX请求。该计时器以1/10秒的间隔运行,当然时间很紧,但代码会通过所有这些作业,偶尔会有一个时钟滴答声出现在前一个时钟滴答声之上
因此,我怀疑您在1秒间隔和一个滴答处理程序上会遇到任何问题。到目前为止,您是如何测试的?