耗尽 MAX_SAFE_INTEGER 的整数需要多长时间?

问题描述 投票:0回答:1

我发现寻找这个答案令人困惑并且没有很好的记录。

在 JavaScript 中,

MAX_SAFE_INTEGER
定义为
2^53 - 1

我确实发现了一篇文章,它对如此大的数字进行了透视,但他们关注的是

2^64
。而JS使用的数字更小。大多数生日悖论计算器都无法缩放到该数字。

为什么这很有趣?我发现自己正在与开发人员讨论如何在 Web 应用程序中使用 UUID(v4) 作为唯一 ID。相比之下,单个 Web 应用程序中全局使用的单调计数器将具有整个

2^53 - 1
唯一值空间每个选项卡会话。我有兴趣了解单调计数器的值耗尽与 UUIDv4 的碰撞概率之间的权衡。

javascript uuid
1个回答
0
投票

如果我们假设我们正在使用每秒递增一次的单调计数器,那么计算耗尽

MAX_SAFE_INTEGER
的时间(以年为单位)应该非常简单。首先,我们可以计算
MAX_SAFE_INTEGER
(2^53 -1) 等于 9,007,199,254,740,991。然后,我们将其除以一年中的秒数(这只适用于假设计数器每秒递增一次),即 31,536,000 秒。因此,需要 9,007,199,254,740,991 / 31,536,000 = 285,616,414.7 年才能耗尽。话虽这么说,计数器递增的速率是可变的,所以这只是一个粗略的计算。

© www.soinside.com 2019 - 2024. All rights reserved.