简介

UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。

uuid 常用场景

IOT 设备,设备号;网站 sessionid,cookie 用户id;数据库主键id;

uuid 生成工具

hutool Java工具包集[1] mica 基于 Spring、 java8 微服务工具集[2]

压测代码

测试基于 JMH,是专门用于代码微基准测试的工具套件,基于方法层面的基准测试,精度可以达到微秒级。

压测代码源码存放于 github,感兴趣的朋友可以:https://github.com/lets-mica/mica-jmh[3]

jdk8UUId





@Benchmarkpublic String jdk8UUId() {    return UUID.randomUUID().toString();}

jdk8ThreadLocalRandomUUId







@Benchmarkpublic String jdk8ThreadLocalRandomUUId() {    ThreadLocalRandom random = ThreadLocalRandom.current();    UUID uuid = new UUID(random.nextInt(), random.nextInt());    return uuid.toString();}

hutoolFastSimpleUUID





@Benchmarkpublic String hutoolFastSimpleUUID() {    return IdUtil.fastSimpleUUID();}

micaUUId





@Benchmarkpublic String micaUUId() {    return StringUtil.getUUID();}

压测环境

OS: macOS MojaveCPU: 2.8 GHz Intel Core i5RAM: 8 GB 1600 MHz DDR3JVM: Oracle 1.8.0_201 64 bits

压测结果

BenchmarkScoreErrorUnits
jdk8 UUID734.59517.220ops/ms
jdk8ThreadLocalRandom3224.75932.107ops/ms
hutoolFastSimpleUUID3619.74867.195ops/ms
mica uuid (java9 方式)12375.405241.879ops/ms

说明:每毫秒生成的 uuid 数,得分越高越好。

总结

mica 由于参考(copy) java9 的 uuid 生成方式性能强劲,是 jdk8 ThreadLocalRandom 和 hutool FastSimpleUUID 的3到4倍的。

由于 uuid 的使用场景一般都需要高性能高并发,大家在使用的时候可以尝试使用 java9+ 或者参考他的算法去实现。


©著作权归作者所有:来自51CTO博客作者轮子工厂的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 还在一行一行的写html,感受痛苦吧
  2. 网工在路上--漫谈生成树中的防护机制
  3. FastReport报表生成器有关COM / ActiveX快速报告
  4. springboot2.x引入Mybatis-plus-generator代码自动生成工具
  5. 【asp.net core 系列】9 实战之 UnitOfWork以及自定义代码生成
  6. 【Nest教程】集成Swagger自动生成接口文档
  7. Vue3动态添加路由及生成菜单
  8. 三种方式让你轻松监控 EntityFramework 中的 sql 流转
  9. Android Studio生成签名文件方法

随机推荐

  1. 推荐一个项目管理工具,落地基于Scrum的敏
  2. 2019 我的 Github 开源之路!
  3. 一路走来,感谢有你!2020新年红包奉上!
  4. Spring Cloud Alibaba:Sentinel实现熔断与
  5. 使用Jenkins一键打包部署前端应用,就是这
  6. 大家心心念念的权限管理功能,这次安排上了
  7. Github标星19K+Star,10分钟自建对象存储服
  8. 前后端分离项目,如何优雅实现文件存储!
  9. 手把手教你搞定权限管理,结合Spring Secur
  10. 前后端分离项目,引入 Spring Cloud Gatewa