文档章节

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

如梦技术
 如梦技术
发布于 03/30 13:52
字数 558
阅读 126
收藏 2

简介

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

uuid 常用场景

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

uuid 生成工具

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

压测代码

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

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

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+ 或者参考他的算法去实现。

开源推荐

关注我们

如梦技术-公众号.jpg

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

© 著作权归作者所有

如梦技术

如梦技术

粉丝 362
博文 52
码字总数 25132
作品 6
朝阳
后端工程师
私信 提问
加载中

评论(2)

如梦技术
如梦技术 博主

引用来自“光脚满地跑”的评论

看来有必要研究下hutool→_→
😄有空研究 #mica# 吧。
光脚满地跑
光脚满地跑
看来有必要研究下hutool→_→
利用Java.util.UUID来生成唯一ID(用来做数据库主键好用)

UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址...

javaVSandroid
2017/03/15
0
0
linux下安装使用libuuid

UUID简介 UUID含义是通用唯一识别码(Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distr...

t146lla128xx0x
2017/12/12
0
0
Java UUID Generator

JUG 是一个纯 Java 的 UUID 生成器。 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计...

匿名
2010/11/18
5.6K
2
java uuid 生成方法

UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址...

雪中漫步
2010/03/29
3K
0
hibernate 如何增加id的生成方式

比如 @Id @GeneratedValue(generator = "uuid") @GenericGenerator(name = "uuid", strategy = "uuid") 这么配置是使用uuid,我想要增加一个myid然后使用我自己写的主键生成方式 请问怎么配呢......

五娃
2017/05/23
177
1

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部