使用 java9 的 uuid 生成方式,让你的 uuid 生成速度提升一个档次。

简介

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

uuid 常用场景

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

uuid 生成工具

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

压测代码

测试基于 JMH,是专门用于代码微基准测试的工具套件,基于方法层面的基准测试,精度可以达到微秒级。压测代码源码存放于 github,感兴趣的朋友可以访问:github.com/lets-mica/m… 获取。

jdk8UUId

@Benchmark
public String jdk8UUId() {return UUID.randomUUID().toString();
}
复制代码

jdk8ThreadLocalRandomUUId

@Benchmark
public String jdk8ThreadLocalRandomUUId() {ThreadLocalRandom random = ThreadLocalRandom.current();UUID uuid = new UUID(random.nextInt(), random.nextInt());return uuid.toString();
}
复制代码

hutoolFastSimpleUUID

@Benchmark
public String hutoolFastSimpleUUID() {return IdUtil.fastSimpleUUID();
}
复制代码

micaUUId

@Benchmark
public String micaUUId() {return StringUtil.getUUID();
}
复制代码

压测环境

  • OS: macOS Mojave
  • CPU: 2.8 GHz Intel Core i5
  • RAM: 8 GB 1600 MHz DDR3
  • JVM: Oracle 1.8.0_201 64 bits

压测结果

Benchmark Score Error Units
jdk8UUId 734.595 17.220 ops/ms
jdk8ThreadLocalRandomUUId 3224.759 32.107 ops/ms
hutoolFastSimpleUUID 3619.748 67.195 ops/ms
micaUUId(java9 方式) 12375.405 241.879 ops/ms

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

总结

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

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

开源推荐

  • Spring boot 微服务高效开发 mica 工具集:gitee.com/596392912/m…
  • Avue 一款基于vue可配置化的神奇框架:gitee.com/smallweigit…
  • pig 宇宙最强微服务(架构师必备):gitee.com/log4j/pig
  • SpringBlade 完整的线上解决方案(企业开发必备):gitee.com/smallc/Spri…
  • IJPay 支付SDK让支付触手可及:gitee.com/javen205/IJ…

关注我们

扫描上面二维码,更多精彩内容每天推荐!

转载于:https://juejin.im/post/5c9effb86fb9a05e7b5c568a

使用java9的uuid生成方式,让uuid生成速度提升一个档次相关推荐

  1. 使用java9的uuid生成方式,让uuid生成速度提升一个档次...

    简介 UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定. uuid 常用场景 IOT 设备,设备号: 网站 sessionid,cookie ...

  2. 将端到端文本转语音速度提高38倍,全新语音合成系统FastSpeech 梅尔谱的生成速度提升270倍,微软和浙大联合推出

    将端到端文本转语音速度提高38倍,全新语音合成系统FastSpeech 梅尔谱的生成速度提升270倍,微软和浙大联合推出 目前,基于神经网络的端到端文本到语音合成技术发展迅速,但仍面临不少问题--合成 ...

  3. UUID/GUID介绍、生成规则及生成代码

    UUID/GUID介绍.生成规则及生成代码 1. UUID介绍 1.1 介绍 1.2 UUID优势 1.3 UUID劣势 2. UUID版本 2.1 版本1 - 基于时间的UUID 2.1.1优点 2 ...

  4. java uuid静态方法_Java UUID nameUUIDFromBytes()方法及示例

    java uuid静态方法 UUID类名UUIDFromBytes()方法 (UUID Class nameUUIDFromBytes() method) nameUUIDFromBytes() me ...

  5. golang not enough arguments in call to uuid.Must have (uuid.UUID) want (uuid.UUID, error)

    golang not enough arguments in call to uuid.Must have (uuid.UUID) want (uuid.UUID, error) 相信出现此问题的都是 ...

  6. linux查看设备的uuid,设备的UUID详解 - 笑遍世界的测试技术 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    第一次看到UUID这个东西,是在Ubuntu系统中看到/boot/grub/grub.cfg中对kernel的配置: linux/boot/vmlinuz-2.6.31-14-generic root ...

  7. java uuid静态方法_Java UUID equals()方法与示例

    java uuid静态方法 UUID类equals()方法 (UUID Class equals() method) equals() method is available in java.util ...

  8. java uuid静态方法_Java UUID toString()方法与示例

    java uuid静态方法 UUID类toString()方法 (UUID Class toString() method) toString() method is available in jav ...

  9. java uuid静态方法_Java UUID compareTo()方法与示例

    java uuid静态方法 UUID类compareTo()方法 (UUID Class compareTo() method) compareTo() method is available in ...

最新文章

  1. ​​​​​​​Git学习笔记与IntelliJ IDEA整合
  2. java lambdamart库,LambdaMART 之 lambda(示例代码)
  3. 程序猿误区:程序员只负责编码
  4. Oracle bug 使用max或min函数into到一个char类型报字符缓冲区太小的错误
  5. FreeRTOS 教程指南 学习笔记 第一章 简介
  6. Win7安装英文语言包(图文)
  7. Magisk 安装说明
  8. AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(菜单篇)
  9. 苹果电脑装双系统利弊有哪些
  10. 三极管电路限流电阻如何选择
  11. 信号量机制(P,V操作)
  12. 别乱说,算法才不是脑筋急转弯
  13. win10连接文件服务器记住密码如何删除,win10系统访问共享文件夹需要密码的取消方法...
  14. 1.3_VMare 16 虚拟机安装配置 CentOS-7-x86_64-DVD-2009+GUI+原生 Java 1.8+ibus+VMware Tools
  15. 《网络架构系列2-Http详解》
  16. igg google
  17. 西安交通大学城市学院计算机二级,西安交通大学城市学院计算机系举行考研经验分享交流会...
  18. 图片站选择什么样的服务器好?
  19. 嵌入式linux播放视频 mplayer,mplayer 移植后无法播放视频
  20. 股票成交价格确定方法详解

热门文章

  1. java动态删除属性值_JavaBean动态添加删除属性
  2. ming window 交叉编译_Golang在windows下交叉编译linux程序
  3. 报表类似选项卡的功能
  4. kafka的消费者客户端偏移的维护
  5. 将Excel VBA封装成exe程序[老贴收藏]
  6. VB 提取TextBox 文本框中指定一行字符串
  7. SpringBoot实战(十四):Spring Boot Admin 集成安全模块
  8. 官方钦定TensorFlow2.0要改这个API,用户吐槽:全世界都是keras
  9. 刚刚,自动驾驶路测国家规范出台:无人车即将开上更多实际道路
  10. JS+XMLDOM+XSL:实现中英文界面切换、排序、分页显示、增删改查XML文件数据源