Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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_Performance_Processing Efficiency - Fatal编程技术网

Javascript 高效秒表

Javascript 高效秒表,javascript,performance,processing-efficiency,Javascript,Performance,Processing Efficiency,嗨,我正在用javascript编写秒表实用程序,我对效率和开销有一个问题。我考虑过两种制作秒表的方法: 1.存储开始日期,并不断测量自该日期起的毫秒数 2.创建一个整数并以设定的间隔递增其值 我想知道哪个效率最高。此外,我不确定选项2是否非常准确,如果有人对此有任何意见,那也会非常棒。选项2将不准确,尤其是如果您有一个带有其他用途的附加javascript的页面。采用第一种方法。正如其他人所说,采用第1种方法。如果您想要一个每秒(或每分钟或任何时间)都在滴答作响的时钟,您应该估计下一个“滴答作

嗨,我正在用javascript编写秒表实用程序,我对效率和开销有一个问题。我考虑过两种制作秒表的方法:

1.存储开始日期,并不断测量自该日期起的毫秒数

2.创建一个整数并以设定的间隔递增其值


我想知道哪个效率最高。此外,我不确定选项2是否非常准确,如果有人对此有任何意见,那也会非常棒。

选项2将不准确,尤其是如果您有一个带有其他用途的附加javascript的页面。采用第一种方法。

正如其他人所说,采用第1种方法。如果您想要一个每秒(或每分钟或任何时间)都在滴答作响的时钟,您应该估计下一个“滴答作响”的时间,以便在正确的时间后几毫秒调用setTimeout,例如,在下一整秒之后运行:

var d = new Date();
var interval = 1020 - d.getMilliseconds();
setTimeout(fn, interval);

这样,如果一个调用的执行因系统繁忙而延迟,那么下一个调用仍应在下一整秒钟后20毫秒左右调用。

#1效率更高,而#2则不起作用,因为您无法保证“滴答”之间的时间间隔。
性能。然而,现在()
在现代浏览器中可用,对于选项#1,应考虑时钟变化。也就是说,应将预期变化和实际变化进行比较(具有适当的误差范围)——并在需要时进行纠正。当然,这是一个非常边缘的情况。这仍然可能错过超时(例如,计算机进入睡眠状态);根据需要,仍然需要超时内的增量。当然,浏览器中的任何内容都取决于执行脚本的浏览器。你所说的“超时内的增量”是什么意思?关于确保时钟在正确的时间更新的观点很有趣。然而,如果没有这个功能,即使时钟在显示器上落后,它仍然会显示正确的时间,不是吗?@Drew-它会在更新时显示正确的时间,但在更新之前它可能会显示错误的时间(根据更新的规律性,在更短或更长的时间内)。我们的想法是让它尽可能定期更新-即尽可能接近“滴答声”-因为即使是定期更新中的轻微延迟或急促也会对用户明显,并导致他们对计时器失去信心。