skipmap
skipmap copied to clipboard
performance on go1.24
I ran the performance tests of this repository on my mac and strangely found that the performance seemed to be weaker than sync.Map.
benchstat x.txt
goos: darwin
goarch: arm64
pkg: github.com/zhangyunhao116/skipmap
cpu: Apple M1 Pro
│ x.txt │
│ sec/op │
LoadOrStoreExist-10 10.06n ± 41%
LoadOrStoreLazyExist-10 6.676n ± 17%
LoadOrStoreExistSingle-10 10.61n ± 6%
LoadOrStoreLazyExistSingle-10 10.62n ± 1%
LoadOrStoreRandom-10 142.0n ± 20%
LoadOrStoreLazyRandom-10 133.9n ± 5%
LoadOrStoreRandomSingle-10 371.6n ± 3%
LoadOrStoreLazyRandomSingle-10 379.1n ± 3%
Int64/Store/skipmap-10 134.7n ± 5%
Int64/Store/sync.Map-10 62.27n ± 5%
Int64/Load50Hits/skipmap-10 9.985n ± 13%
Int64/Load50Hits/sync.Map-10 6.658n ± 16%
Int64/30Store70Load/skipmap-10 44.87n ± 1%
Int64/30Store70Load/sync.Map-10 17.54n ± 3%
Int64/1Delete9Store90Load/skipmap-10 25.91n ± 2%
Int64/1Delete9Store90Load/sync.Map-10 11.83n ± 9%
Int64/1Range9Delete90Store900Load/skipmap-10 30.61n ± 6%
Int64/1Range9Delete90Store900Load/sync.Map-10 12.46n ± 11%
String/Store/skipmap-10 159.1n ± 9%
String/Store/sync.Map-10 78.90n ± 13%
String/Load50Hits/skipmap-10 30.95n ± 23%
String/Load50Hits/sync.Map-10 8.359n ± 5%
String/30Store70Load/skipmap-10 73.27n ± 6%
String/30Store70Load/sync.Map-10 33.25n ± 4%
String/1Delete9Store90Load/skipmap-10 43.00n ± 10%
String/1Delete9Store90Load/sync.Map-10 18.20n ± 11%
String/1Range9Delete90Store900Load/skipmap-10 42.92n ± 2%
String/1Range9Delete90Store900Load/sync.Map-10 17.60n ± 3%
geomean 33.46n
│ x.txt │
│ B/op │
LoadOrStoreExist-10 0.000 ± 0%
LoadOrStoreLazyExist-10 0.000 ± 0%
LoadOrStoreExistSingle-10 0.000 ± 0%
LoadOrStoreLazyExistSingle-10 0.000 ± 0%
LoadOrStoreRandom-10 88.00 ± 0%
LoadOrStoreLazyRandom-10 88.00 ± 0%
LoadOrStoreRandomSingle-10 88.00 ± 0%
LoadOrStoreLazyRandomSingle-10 88.00 ± 0%
Int64/Store/skipmap-10 96.00 ± 0%
Int64/Store/sync.Map-10 117.0 ± 0%
Int64/Load50Hits/skipmap-10 0.000 ± 0%
Int64/Load50Hits/sync.Map-10 0.000 ± 0%
Int64/30Store70Load/skipmap-10 28.00 ± 4%
Int64/30Store70Load/sync.Map-10 32.00 ± 0%
Int64/1Delete9Store90Load/skipmap-10 8.000 ± 0%
Int64/1Delete9Store90Load/sync.Map-10 10.00 ± 0%
Int64/1Range9Delete90Store900Load/skipmap-10 8.000 ± 0%
Int64/1Range9Delete90Store900Load/sync.Map-10 10.00 ± 0%
String/Store/skipmap-10 112.0 ± 0%
String/Store/sync.Map-10 141.0 ± 0%
String/Load50Hits/skipmap-10 15.00 ± 0%
String/Load50Hits/sync.Map-10 15.00 ± 0%
String/30Store70Load/skipmap-10 44.00 ± 0%
String/30Store70Load/sync.Map-10 50.00 ± 0%
String/1Delete9Store90Load/skipmap-10 24.00 ± 0%
String/1Delete9Store90Load/sync.Map-10 27.00 ± 0%
String/1Range9Delete90Store900Load/skipmap-10 24.00 ± 0%
String/1Range9Delete90Store900Load/sync.Map-10 27.00 ± 0%
geomean ¹
¹ summaries must be >0 to compute geomean
│ x.txt │
│ allocs/op │
LoadOrStoreExist-10 0.000 ± 0%
LoadOrStoreLazyExist-10 0.000 ± 0%
LoadOrStoreExistSingle-10 0.000 ± 0%
LoadOrStoreLazyExistSingle-10 0.000 ± 0%
LoadOrStoreRandom-10 2.000 ± 0%
LoadOrStoreLazyRandom-10 2.000 ± 0%
LoadOrStoreRandomSingle-10 2.000 ± 0%
LoadOrStoreLazyRandomSingle-10 2.000 ± 0%
Int64/Store/skipmap-10 2.000 ± 0%
Int64/Store/sync.Map-10 2.000 ± 0%
Int64/Load50Hits/skipmap-10 0.000 ± 0%
Int64/Load50Hits/sync.Map-10 0.000 ± 0%
Int64/30Store70Load/skipmap-10 0.000 ± 0%
Int64/30Store70Load/sync.Map-10 0.000 ± 0%
Int64/1Delete9Store90Load/skipmap-10 0.000 ± 0%
Int64/1Delete9Store90Load/sync.Map-10 0.000 ± 0%
Int64/1Range9Delete90Store900Load/skipmap-10 0.000 ± 0%
Int64/1Range9Delete90Store900Load/sync.Map-10 0.000 ± 0%
String/Store/skipmap-10 3.000 ± 0%
String/Store/sync.Map-10 3.000 ± 0%
String/Load50Hits/skipmap-10 1.000 ± 0%
String/Load50Hits/sync.Map-10 1.000 ± 0%
String/30Store70Load/skipmap-10 1.000 ± 0%
String/30Store70Load/sync.Map-10 1.000 ± 0%
String/1Delete9Store90Load/skipmap-10 1.000 ± 0%
String/1Delete9Store90Load/sync.Map-10 1.000 ± 0%
String/1Range9Delete90Store900Load/skipmap-10 1.000 ± 0%
String/1Range9Delete90Store900Load/sync.Map-10 1.000 ± 0%
geomean ¹
¹ summaries must be >0 to compute geomean
go version:go version go1.24.0 darwin/arm64
maybe the benchmark result should be updated