使用java9的uuid生成方式,讓uuid生成速度提升一個檔

簡介

UUID 的目的,是讓分佈式系統中的所有元素,都能有唯一的辨識信息,而不需要通過中央控制端來做辨識信息的指定。

uuid 常用場景

  1. IOT 設備,設備號;
  2. 網站 sessionid,cookie 用戶id;
  3. 數據庫主鍵id;

uuid 生成工具

hutool Java工具包集
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

掃描上面二維碼,更多精彩內容每天推薦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章