6个版本
0.1.10 | 2023年10月17日 |
---|---|
0.1.9 | 2023年10月17日 |
0.1.8 | 2022年10月6日 |
#433 在 数据结构
21KB
402 行
snowflake-rs
一个简单的Rust包,用于生成或解析Twitter的雪花ID,为分布式系统生成可按时间排序的64位唯一ID(灵感来源于Twitter的雪花)
这是一个受Twitter的Snowflake启发的分布式唯一ID生成器。
这是对原始的houseme/snowflake的Rust实现,原始版本是用Go编写的。
雪花ID由以下部分组成
39位表示时间(以10毫秒为单位)8位表示序列号16位表示机器ID
安装
将以下内容添加到您的Cargo.toml
[dependencies]
snowflake_me = "0.1"
快速入门
use snowflake_me::Snowflake;
let sf = Snowflake::new().unwrap();
let next_id = sf.next_id().unwrap();
println!("{}", next_id);
基准测试
使用 cargo bench
运行基准测试。
1、基准测试在配备2.4GHz i9和64GB内存的2019年款MacBook Pro (16英寸)上运行。
test bench_decompose ... bench: 651 ns/iter (+/- 251)
test bench_new ... bench: 795,722 ns/iter (+/- 371,556)
test bench_next_id ... bench: 36,652 ns/iter (+/- 1,105)
2、基准测试在配备2.8GHz i7和16GB内存的2017年款MacBook Pro (15英寸)上运行。
test bench_decompose ... bench: 1,066 ns/iter (+/- 132)
test bench_new ... bench: 738,129 ns/iter (+/- 318,192)
test bench_next_id ... bench: 37,390 ns/iter (+/- 499)
许可证
许可协议为以下之一
- Apache License,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交的工作的所有贡献,均将按照上述协议双许可,不附加任何额外条款或条件。
依赖关系
~4–5.5MB
~97K SLoC