ULID规范解读与实现原理( 五 )

某次测试报告如下(开发环境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的规范进行解读,通过规范和参考现有类库进行ULIDJava实现 。ULID适用于一些"排序ID"生成或者需要"单调ID"生成的场景,可以考虑用于数据库键设计、顺序号设计等等场景 。从实现上看它性能会优于UUID(特别是单调ULID,因为不需要重新获取随机数部分,吞吐量会提升一个数量级) 。
Demo项目仓库:

  • framework-mesh/ulid4jhttps://github.com/zjcscut/framework-mesh/tree/master/ulid4j
参考资料:
  • ulid-spec
  • crockford-base32
  • ulid-creator
【ULID规范解读与实现原理】

推荐阅读