Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 - Fatal编程技术网

两个JavaScript定时器与一个定时器相比,为了性能,是否值得放弃一个?

两个JavaScript定时器与一个定时器相比,为了性能,是否值得放弃一个?,javascript,Javascript,在我正在构建的一个web应用程序中,每一秒钟有两个松散相关的代码在两个独立的计时器中运行 我希望优化Javascript,是否值得将这两个计时器合并为一个计时器,或者这只是一个简单的问题 实际上,我是否打算通过将两个1秒的间隔合并为一个1秒的间隔来提高性能(考虑到我们不知道访问者正在运行哪种类型的系统) 据我所知,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秒间隔和一个滴答处理程序上会遇到任何问题。

到目前为止,您是如何测试的?