2 个稳定版本
1.1.0 | 2024 年 6 月 11 日 |
---|---|
1.0.0 | 2024 年 6 月 11 日 |
0.1.1 |
|
0.1.0 |
|
#644 在 数据结构
10KB
160 行
awid - 精彩的 ID!
一个小巧、简单且全球唯一的标识符。
为什么使用(或不使用)这个包?
特性
- 9 字节的小巧尺寸
- K-有序(说明:使用时间戳进行近排序)
- 内置秒级精度的时间戳
- 几乎不可能发生冲突(这使得它全球唯一...可能吧)
抗冲突性
Awid 有 5 字节的随机数据,有 2^40 种可能的组合。
这是每秒 1,099,511,627,776 种可能的组合。
与其他 ID 的大小比较
Snowflake - 64 位(8 字节)
Awid - 72 位(9 字节)
Xid - 96 位(12 字节)
UUID - 128 位(16 字节)
注意:ID 有不同的用途。大尺寸并不总是坏事。
性能测试
创建一个 Awid 需要 50 纳秒,使用提供的时间戳创建一个 Awid 需要 15 纳秒。
从这个结果来看,主要的瓶颈是获取来自操作系统的 Unix 时间。
这些测试是在我的本地机器上进行的,结果可能会有所不同。
要自己运行这些测试,请复制 Git 仓库并运行 cargo bench
。
许可证
根据您的选择,许可协议为
- Apache 许可证版本 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确表示,否则您提交给作品以供包含在内的任何贡献,根据 Apache-2.0 许可证的定义,应按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~0.4–1.2MB
~24K SLoC