UUID 的目的,是讓分佈式系統中的全部元素,都能有惟一的辨識信息,而不須要經過中央控制端來作辨識信息的指定。java
•IOT 設備,設備號;•網站 sessionid,cookie 用戶id;•數據庫主鍵id;git
hutool Java工具包集[1] mica 基於 Spring、 java8 微服務工具集[2]github
測試基於 JMH,是專門用於代碼微基準測試的工具套件,基於方法層面的基準測試,精度能夠達到微秒級。算法
壓測代碼源碼存放於 github,感興趣的朋友能夠:https://github.com/lets-mica/mica-jmh[3]數據庫
@Benchmarkpublic String jdk8UUId() { return UUID.randomUUID().toString();}
@Benchmarkpublic String jdk8ThreadLocalRandomUUId() { ThreadLocalRandom random = ThreadLocalRandom.current(); UUID uuid = new UUID(random.nextInt(), random.nextInt()); return uuid.toString();}
@Benchmarkpublic String hutoolFastSimpleUUID() { return IdUtil.fastSimpleUUID();}
@Benchmarkpublic 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 bitscookie
Benchmark | Score | Error | Units |
jdk8 UUID | 734.595 | 17.220 | ops/ms |
jdk8ThreadLocalRandom | 3224.759 | 32.107 | ops/ms |
hutoolFastSimpleUUID | 3619.748 | 67.195 | ops/ms |
mica uuid (java9 方式) | 12375.405 | 241.879 | ops/ms |
說明:每毫秒生成的 uuid
數,得分越高越好。session
mica 因爲參考(copy) java9 的 uuid 生成方式性能強勁,是 jdk8 ThreadLocalRandom 和 hutool FastSimpleUUID 的3到4倍的。併發
因爲 uuid 的使用場景通常都須要高性能高併發,你們在使用的時候能夠嘗試使用 java9+
或者參考他的算法去實現。dom