某次测试报告如下(开发环境Intel 6700K 4C8T 32G
,使用OpenJDK-19
):
BenchmarkModeCntScoreErrorUnitsBenchmarkRunner.createMonotonicULIDthrpt518529.565 ± 3432.113ops/msBenchmarkRunner.createMonotonicULIDToStringthrpt512308.443 ± 1729.675ops/msBenchmarkRunner.createULIDthrpt5122347.702 ± 3183.734ops/msBenchmarkRunner.createULIDToCanonicalString0thrpt550848.135 ± 3699.334ops/msBenchmarkRunner.createULIDToStringthrpt537346.891 ± 1029.809ops/msBenchmarkRunner.createUUIDthrpt5806.134 ±218.622ops/msBenchmarkRunner.createUUIDToStringthrpt5813.380 ±46.333ops/ms
小结本文就ULID
的规范进行解读,通过规范和参考现有类库进行ULID
的Java
实现 。ULID
适用于一些"排序ID"生成或者需要"单调ID"生成的场景,可以考虑用于数据库键设计、顺序号设计等等场景 。从实现上看它性能会优于UUID
(特别是单调ULID
,因为不需要重新获取随机数部分,吞吐量会提升一个数量级) 。
Demo
项目仓库:
framework-mesh/ulid4j
:https://github.com/zjcscut/framework-mesh/tree/master/ulid4j
- ulid-spec
- crockford-base32
- ulid-creator
推荐阅读
- vite vue3 规范化与Git Hooks
- 钩子 【pytest官方文档】解读-插件开发之hooks 函数
- 中 ?打造企业自己代码规范IDEA插件
- HashMap底层原理及jdk1.8源码解读
- JS 模块化-05 ES Module & 4 大规范总结
- 上 ?打造企业自己代码规范IDEA插件
- Go 源码解读|如何用好 errors 库的 errors.Is 与 errors.As() 方法
- 高二化学重要知识难点解读
- 2022年装修全流程保姆级解读 85平米的房子装修需要多少钱
- 国家安全用电规范 国家安全用电常识