JMH之三種常見Map效能對比

2022-08-24 09:42:12 字數 1338 閱讀 1775

@benchmarkmode(mode.throughput)

@outputtimeunit(timeunit.microseconds)

@state(scope.benchmark)

public

class

testmap_jmh

}@benchmark

public

void

hashmapget()

@benchmark

public

void

synmapget()

@benchmark

public

void

conmapget()

@benchmark

public

void

hashmapsize()

@benchmark

public

void

synmapsize()

@benchmark

public

void

conmapsize()

public

static

void

main(string args)

catch

(runnerexception e) }}

benchmark                 mode  cnt     score    error   units

testmap_jmh.conmapget thrpt 10 178.179 ± 17.030 ops/us

testmap_jmh.conmapsize thrpt 10 777.735 ± 35.146 ops/us

testmap_jmh.hashmapget thrpt 10 168.352 ± 7.346 ops/us

testmap_jmh.hashmapsize thrpt 10 1434.474 ± 36.197 ops/us

testmap_jmh.synmapget thrpt 10 40.580 ± 1.227 ops/us

testmap_jmh.synmapsize thrpt 10 44.711 ± 1.657 ops/us

使用了兩個執行緒進行測試,由於hashmap完全不關心執行緒安全,所以他的效能是最好的。

hashmap經過同步的包裝後,效能出現了急劇的下降。

concurrenthashmap的get方法和hashmap的get方法效能近似。

C 例項化物件的三種方式及效能對比

做專案過程中有個需求要例項化兩萬個物件並新增到list中,這個過程大概需要1min才能載入完 傳參較多 於是開啟了 優化之旅,再此記錄。首先想到的是可能例項化比較耗時,於是開始對每種例項化方式進行測試,過程如下 1 用 new 關鍵字例項化乙個類 2 用 activator 例項化乙個類 3 用 a...

詳解C 例項化物件的三種方式及效能對比

做專案過程中有個需求要例項化兩萬個物件並新增到list 中,這個過程大概需要1min才能載入完 傳參較多 於是開啟了 優化之旅,再此記錄。首先想到的是可能例項化比較耗時,於是開始對每種例項化方式進行測試,過程如下 1 用 new 關鍵字例項化乙個類 2 用 activator 例項化乙個類 3 用 ...

資料倉儲專案之 三種事實表的差異對比

三種基本表的型別 事物事實表 週期快照事實表 累計快照事實表 名稱事物事實表 週期快照事實表 累積快照事實表 週期離散事物時間點 以有規律的 可 的間隔產生快照 用於時間跨度不確定的不斷變化的流水線 工作線 粒度每個事物或者事務線的一行 每個快照週期加上其它維度的一行 每次管道事件的一行 日期維度 ...