gpt4 book ai didi

javascript - 为什么超时599147937792比0快?

转载 作者:行者123 更新时间:2023-11-28 19:56:19 24 4
gpt4 key购买 nike

我发现自己在这个 jsperfs 页面上,为什么会发生这种情况?

JSPerf smallest timeout

有什么线索吗?为什么 4 也比 0 快?

最佳答案

有关于此的评论,您应该仔细阅读该文章。

Info

The smallest setTimeout timeout value allowed by the HTML5 specification is 4 ms. Smaller
values should clamp to 4 ms.

Therefore, the first two tests below should have about the same result.

P.S. Some browsers freak out when you use a value greater than 599147937791 for the
timeout (i.e. they use 0 or 4 ms instead), hence the last test.

本质上,Javascript 具有对 0 的内部处理。和599147937792因为它们符合 setTimeout 的上溢/下溢值并且它们被四舍五入到默认的最小接受值 4多发性硬化症。这可能是因为要求 0 是不合理的。 ms 延迟,因为处理该函数并确定这是用户想要的可能需要比这更长的时间。较大值的错误可能是由于计算机限制了您可以表示的数字的大小。

了解为什么大值和小值在 4 之后返回比如内部处理也需要时间,很少,但是时间。考虑这两个时间表:

时间轴1

  1. setTimeout(...,0)被称为
  2. 该函数检查边界条件(例如 if (time < 4) {// use 4} )
  3. 该函数需要额外的步骤来更改 0 -> 4 的值.
  4. 现在它设置 4 的超时女士

时间线2

  1. setTimeout(...,4)被称为
  2. 该函数检查边界条件(例如 if (time < 4) {// use 4} )
  3. 一切都好,继续前进。
  4. 现在它设置 4 的超时女士

在第一种情况下,两个时间线中的步骤 3 需要更长的时间,因为存在更改值的额外步骤。两者都会等待相同的时间,但第二个会稍微早一点开始计时。这与 599147937792 非常相似。 ,除了检查上限。

措辞"freaks out"让我觉得它可能看起来更像

try { 
// try with the given input
} catch (Exception) {
// Ahh I freaked out, just use 4 instead!!!!111!!!
}

关于javascript - 为什么超时599147937792比0快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22484995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com