skipmap icon indicating copy to clipboard operation
skipmap copied to clipboard

performance on go1.24

Open Gaojianli opened this issue 7 months ago • 0 comments

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

Gaojianli avatar Mar 09 '25 05:03 Gaojianli