环境
- MacBook Pro (M1)
- JDK 17
- JMH 1.36
- 运行在本机 Docker 内的 mariadb:10.6.4
运行
基准测试代码: https://gitee.com/AhooWang/CosId/tree/main/cosid-benchmark
git clone [email protected]:Ahoo-Wang/CosId.git cd cosid-benchmark ./gradlew jmh
or
gradle jmhJar java -jar build/libs/cosid-benchmark-2.2.6-jmh.jar -wi 1 -rf json -f 1
报告
# JMH version: 1.36 # VM version: JDK 17.0.7, OpenJDK 64-Bit Server VM, 17.0.7+7-LTS # Warmup: 1 iterations, 10 s each # Measurement: 1 iterations, 10 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations Benchmark (step) ModeCntScore ErrorUnits AtomicLongBenchmark.generate N/Athrpt 142725210.565ops/s CosIdBenchmark.generate1thrpt 131920684.604ops/s CosIdBenchmark.generate100thrpt 132113994.232ops/s CosIdBenchmark.generate 1000thrpt 130281016.155ops/s LeafBenchmark.generate 1thrpt25787669.815ops/s LeafBenchmark.generate 100thrpt23897328.183ops/s LeafBenchmark.generate1000thrpt23550106.538ops/s
GitHub Action 环境测试报告: Performance: CosId vs Leaf
因受到 GitHub Runner 资源限制,运行在 GitHub Runner 中的基准测试与真实环境基准测试对比有非常大的差距(近2倍), 但是对于运行在同一环境配置资源情况下(都运行在 GitHub Runner),进行 commit 前后的基准对比、以及第三方库的对比依然是有价值的。
结论
- CosId (
SegmentChainId
) 性能是 Leaf (segment
) 的 5 倍。 - CosId 、Leaf 的性能与号段步长(Step) 无关。
- CosId TPS 基本接近
AtomicLong
。分布式ID(CosId)之号段链模式性能(1.2亿/s)解析