Skip to content

Latest commit

 

History

History
732 lines (614 loc) · 36.9 KB

benchmarks.md

File metadata and controls

732 lines (614 loc) · 36.9 KB

unsigned_map Benchmarks

########################################################
Benchmark using linear keys, 0 to 2500000, no duplicates
########################################################
Num unique keys : 2500000

###############################
Copy ctor 2500000 small objects
###############################
std::unordered_map copy ctor                                  1.151719s        1.000000x
std::map copy ctor                                            0.792965s        1.452421x
fea::unsigned_map copy ctor                                   0.032632s        35.293835x

#############################
Copy ctor 2500000 big objects
#############################
std::map copy ctor                                            4.309895s        1.000000x
std::unordered_map copy ctor                                  2.918783s        1.476607x
fea::unsigned_map copy ctor                                   1.190347s        3.620705x

###########################
Clear 2500000 small objects
###########################
std::unordered_map clear                                      0.537538s        1.000000x
std::map clear                                                0.335137s        1.603935x
fea::unsigned_map clear                                       0.000000s        infx

#########################
Clear 2500000 big objects
#########################
std::map clear                                                2.219605s        1.000000x
std::unordered_map clear                                      1.756794s        1.263441x
fea::unsigned_map clear                                       0.000000s        infx

############################
Insert 2500000 small objects
############################
std::unordered_map insert                                     0.378286s        1.000000x
std::map insert                                               0.346830s        1.090697x
fea::unsigned_map insert                                      0.028351s        13.342763x

##########################
Insert 2500000 big objects
##########################
std::map insert                                               3.240972s        1.000000x
std::unordered_map insert                                     2.631293s        1.231703x
fea::unsigned_map insert                                      0.310725s        10.430348x

###########################################
Erase 2500000 (all) small objects at random
###########################################
std::map erase                                                2.061097s        1.000000x
std::unordered_map erase                                      0.599892s        3.435780x
fea::unsigned_map erase                                       0.185926s        11.085584x

#########################################
Erase 2500000 (all) big objects at random
#########################################
std::map erase                                                5.036562s        1.000000x
std::unordered_map erase                                      3.957800s        1.272566x
fea::unsigned_map erase                                       0.618260s        8.146353x

##########################################
Insert 2500000 small objects after reserve
##########################################
std::unordered_map insert                                     0.394593s        1.000000x
std::map insert                                               0.354036s        1.114558x
fea::unsigned_map insert                                      0.025379s        15.548216x

########################################
Insert 2500000 big objects after reserve
########################################
std::map insert                                               3.518457s        1.000000x
std::unordered_map insert                                     2.744652s        1.281932x
fea::unsigned_map insert                                      0.310142s        11.344645x

##############################################
Iterate 2500000 small objects and assign value
##############################################
std::map iterate & assign                                     0.075435s        1.000000x
std::unordered_map iterate & assign                           0.067905s        1.110884x
fea::unsigned_map iterate & assign                            0.038293s        1.969929x

############################################
Iterate 2500000 big objects and assign value
############################################
std::map iterate & assign                                     0.290063s        1.000000x
std::unordered_map iterate & assign                           0.265521s        1.092430x
fea::unsigned_map iterate & assign                            0.240552s        1.205821x



########################################################
Benchmark using linear keys, 2500000 to 0, no duplicates
########################################################
Num unique keys : 2500000

###############################
Copy ctor 2500000 small objects
###############################
std::unordered_map copy ctor                                  1.107623s        1.000000x
std::map copy ctor                                            0.841356s        1.316474x
fea::unsigned_map copy ctor                                   0.032643s        33.931718x

#############################
Copy ctor 2500000 big objects
#############################
std::map copy ctor                                            4.333532s        1.000000x
std::unordered_map copy ctor                                  2.847264s        1.521999x
fea::unsigned_map copy ctor                                   1.186175s        3.653366x

###########################
Clear 2500000 small objects
###########################
std::unordered_map clear                                      0.574819s        1.000000x
std::map clear                                                0.437415s        1.314127x
fea::unsigned_map clear                                       0.000000s        infx

#########################
Clear 2500000 big objects
#########################
std::map clear                                                3.422172s        1.000000x
std::unordered_map clear                                      1.994317s        1.715962x
fea::unsigned_map clear                                       0.000000s        infx

############################
Insert 2500000 small objects
############################
std::unordered_map insert                                     0.381532s        1.000000x
std::map insert                                               0.351536s        1.085328x
fea::unsigned_map insert                                      0.025614s        14.895490x

##########################
Insert 2500000 big objects
##########################
std::map insert                                               3.697916s        1.000000x
std::unordered_map insert                                     2.507451s        1.474771x
fea::unsigned_map insert                                      0.303105s        12.200125x

###########################################
Erase 2500000 (all) small objects at random
###########################################
std::map erase                                                2.166736s        1.000000x
std::unordered_map erase                                      0.651744s        3.324519x
fea::unsigned_map erase                                       0.190653s        11.364799x

#########################################
Erase 2500000 (all) big objects at random
#########################################
std::map erase                                                5.526953s        1.000000x
std::unordered_map erase                                      4.454070s        1.240877x
fea::unsigned_map erase                                       0.620104s        8.912950x

##########################################
Insert 2500000 small objects after reserve
##########################################
std::unordered_map insert                                     0.359057s        1.000000x
std::map insert                                               0.318015s        1.129057x
fea::unsigned_map insert                                      0.023742s        15.123415x

########################################
Insert 2500000 big objects after reserve
########################################
std::map insert                                               3.503023s        1.000000x
std::unordered_map insert                                     2.893732s        1.210555x
fea::unsigned_map insert                                      0.305615s        11.462189x

##############################################
Iterate 2500000 small objects and assign value
##############################################
std::map iterate & assign                                     0.080780s        1.000000x
std::unordered_map iterate & assign                           0.067558s        1.195702x
fea::unsigned_map iterate & assign                            0.037697s        2.142876x

############################################
Iterate 2500000 big objects and assign value
############################################
std::map iterate & assign                                     0.315658s        1.000000x
std::unordered_map iterate & assign                           0.272402s        1.158793x
fea::unsigned_map iterate & assign                            0.250588s        1.259669x



############################################################
Benchmark using 5000000 random uniform distribution keys, with duplicates
############################################################
Num unique keys : 1227019

###############################
Copy ctor 1227019 small objects
###############################
std::unordered_map copy ctor                                  0.459197s        1.000000x
std::map copy ctor                                            0.357469s        1.284580x
fea::unsigned_map copy ctor                                   0.016143s        28.445252x

#############################
Copy ctor 1227019 big objects
#############################
std::map copy ctor                                            2.155539s        1.000000x
std::unordered_map copy ctor                                  1.845563s        1.167957x
fea::unsigned_map copy ctor                                   0.608533s        3.542186x

###########################
Clear 1227019 small objects
###########################
std::unordered_map clear                                      0.319863s        1.000000x
std::map clear                                                0.306773s        1.042670x
fea::unsigned_map clear                                       0.000000s        3198630.000000x

#########################
Clear 1227019 big objects
#########################
std::map clear                                                2.275923s        1.000000x
std::unordered_map clear                                      1.400945s        1.624563x
fea::unsigned_map clear                                       0.000000s        infx

############################
Insert 5000000 small objects
############################
std::map insert                                               3.196918s        1.000000x
std::unordered_map insert                                     0.388278s        8.233589x
fea::unsigned_map insert                                      0.066638s        47.974185x

##########################
Insert 5000000 big objects
##########################
std::map insert                                               5.909745s        1.000000x
std::unordered_map insert                                     3.423378s        1.726290x
fea::unsigned_map insert                                      0.562739s        10.501754x

###########################################
Erase 1227019 (all) small objects at random
###########################################
std::map erase                                                3.022054s        1.000000x
std::unordered_map erase                                      0.345929s        8.736048x
fea::unsigned_map erase                                       0.074532s        40.547339x

#########################################
Erase 1227019 (all) big objects at random
#########################################
std::map erase                                                4.732353s        1.000000x
std::unordered_map erase                                      2.061567s        2.295513x
fea::unsigned_map erase                                       0.295110s        16.035918x

##########################################
Insert 5000000 small objects after reserve
##########################################
std::map insert                                               3.225147s        1.000000x
std::unordered_map insert                                     0.397784s        8.107792x
fea::unsigned_map insert                                      0.078353s        41.161760x

########################################
Insert 5000000 big objects after reserve
########################################
std::map insert                                               6.498736s        1.000000x
std::unordered_map insert                                     3.993628s        1.627276x
fea::unsigned_map insert                                      0.869974s        7.470035x

##############################################
Iterate 1227019 small objects and assign value
##############################################
std::map iterate & assign                                     0.131059s        1.000000x
std::unordered_map iterate & assign                           0.029000s        4.519347x
fea::unsigned_map iterate & assign                            0.018568s        7.058429x

############################################
Iterate 1227019 big objects and assign value
############################################
std::map iterate & assign                                     0.268022s        1.000000x
std::unordered_map iterate & assign                           0.125603s        2.133889x
fea::unsigned_map iterate & assign                            0.117928s        2.272767x



####################################################
Benchmark using 5000000 rand() keys, many duplicates
####################################################
Num unique keys : 32768

#############################
Copy ctor 32768 small objects
#############################
std::map copy ctor                                            0.003609s        1.000000x
std::unordered_map copy ctor                                  0.003542s        1.019116x
fea::unsigned_map copy ctor                                   0.000652s        5.539134x

###########################
Copy ctor 32768 big objects
###########################
fea::unsigned_map copy ctor                                   0.017135s        1.000000x
std::map copy ctor                                            0.012947s        1.323409x
std::unordered_map copy ctor                                  0.011525s        1.486690x

#########################
Clear 32768 small objects
#########################
std::map clear                                                0.001985s        1.000000x
std::unordered_map clear                                      0.001071s        1.852782x
fea::unsigned_map clear                                       0.000000s        infx

#######################
Clear 32768 big objects
#######################
std::map clear                                                0.004911s        1.000000x
std::unordered_map clear                                      0.003670s        1.338156x
fea::unsigned_map clear                                       0.000000s        49109.000000x

############################
Insert 5000000 small objects
############################
std::map insert                                               0.673226s        1.000000x
std::unordered_map insert                                     0.069157s        9.734737x
fea::unsigned_map insert                                      0.019661s        34.242578x

##########################
Insert 5000000 big objects
##########################
std::map insert                                               1.550019s        1.000000x
std::unordered_map insert                                     0.484840s        3.196967x
fea::unsigned_map insert                                      0.262069s        5.914542x

#########################################
Erase 32768 (all) small objects at random
#########################################
std::map erase                                                0.042929s        1.000000x
std::unordered_map erase                                      0.028990s        1.480840x
fea::unsigned_map erase                                       0.008797s        4.879749x

#######################################
Erase 32768 (all) big objects at random
#######################################
std::map erase                                                0.052702s        1.000000x
std::unordered_map erase                                      0.031542s        1.670868x
fea::unsigned_map erase                                       0.011977s        4.400284x

##########################################
Insert 5000000 small objects after reserve
##########################################
std::map insert                                               0.683971s        1.000000x
std::unordered_map insert                                     0.104895s        6.520541x
fea::unsigned_map insert                                      0.019709s        34.703511x

########################################
Insert 5000000 big objects after reserve
########################################
std::map insert                                               1.538086s        1.000000x
std::unordered_map insert                                     0.645134s        2.384132x
fea::unsigned_map insert                                      0.271080s        5.673925x

############################################
Iterate 32768 small objects and assign value
############################################
std::map iterate & assign                                     0.001662s        1.000000x
std::unordered_map iterate & assign                           0.000777s        2.139107x
fea::unsigned_map iterate & assign                            0.000501s        3.320615x

##########################################
Iterate 32768 big objects and assign value
##########################################
std::map iterate & assign                                     0.005385s        1.000000x
std::unordered_map iterate & assign                           0.003320s        1.622108x
fea::unsigned_map iterate & assign                            0.003065s        1.756892x

flat_unsigned_hashmap Benchmarks

########################################################
Benchmark using linear keys, 0 to 2500000, no duplicates
########################################################
Num unique keys : 2500000

###############################
Copy ctor 2500000 small objects
###############################
std::unordered_map copy ctor                                  0.509497s        1.000000x
std::map copy ctor                                            0.268229s        1.899482x
fea::flat_unsigned_hashmap copy ctor                          0.053902s        9.452224x

#############################
Copy ctor 2500000 big objects
#############################
std::unordered_map copy ctor                                  2.278400s        1.000000x
std::map copy ctor                                            1.844449s        1.235274x
fea::flat_unsigned_hashmap copy ctor                          1.243165s        1.832741x

###########################
Clear 2500000 small objects
###########################
std::unordered_map clear                                      0.182482s        1.000000x
std::map clear                                                0.115966s        1.573576x
fea::flat_unsigned_hashmap clear                              0.006057s        30.125450x

#########################
Clear 2500000 big objects
#########################
std::unordered_map clear                                      0.618631s        1.000000x
std::map clear                                                0.581321s        1.064180x
fea::flat_unsigned_hashmap clear                              0.005674s        109.027088x

############################
Insert 2500000 small objects
############################
std::unordered_map insert                                     0.365053s        1.000000x
std::map insert                                               0.358080s        1.019475x
fea::flat_unsigned_hashmap insert                             0.124912s        2.922474x

##########################
Insert 2500000 big objects
##########################
std::unordered_map insert                                     1.555538s        1.000000x
std::map insert                                               1.352866s        1.149810x
fea::flat_unsigned_hashmap insert                             0.444110s        3.502597x

###########################################
Erase 2500000 (all) small objects at random
###########################################
std::map erase                                                2.034019s        1.000000x
std::unordered_map erase                                      0.576010s        3.531223x
fea::flat_unsigned_hashmap erase                              0.208066s        9.775830x

#########################################
Erase 2500000 (all) big objects at random
#########################################
std::map erase                                                3.781830s        1.000000x
std::unordered_map erase                                      1.537036s        2.460470x
fea::flat_unsigned_hashmap erase                              0.645497s        5.858787x

##########################################
Insert 2500000 small objects after reserve
##########################################
std::unordered_map insert                                     0.352006s        1.000000x
std::map insert                                               0.313730s        1.122005x
fea::flat_unsigned_hashmap insert                             0.117619s        2.992781x

########################################
Insert 2500000 big objects after reserve
########################################
std::unordered_map insert                                     1.963729s        1.000000x
std::map insert                                               1.257592s        1.561500x
fea::flat_unsigned_hashmap insert                             0.441302s        4.449858x

##############################################
Iterate 2500000 small objects and assign value
##############################################
std::map iterate & assign                                     0.071127s        1.000000x
std::unordered_map iterate & assign                           0.068560s        1.037436x
fea::flat_unsigned_hashmap iterate & assign                   0.039249s        1.812208x

############################################
Iterate 2500000 big objects and assign value
############################################
std::map iterate & assign                                     0.290166s        1.000000x
std::unordered_map iterate & assign                           0.265522s        1.092813x
fea::flat_unsigned_hashmap iterate & assign                   0.234300s        1.238438x



########################################################
Benchmark using linear keys, 2500000 to 0, no duplicates
########################################################
Num unique keys : 2500000

###############################
Copy ctor 2500000 small objects
###############################
std::unordered_map copy ctor                                  0.706340s        1.000000x
std::map copy ctor                                            0.469871s        1.503265x
fea::flat_unsigned_hashmap copy ctor                          0.054182s        13.036512x

#############################
Copy ctor 2500000 big objects
#############################
std::map copy ctor                                            2.638656s        1.000000x
std::unordered_map copy ctor                                  2.006371s        1.315138x
fea::flat_unsigned_hashmap copy ctor                          1.246134s        2.117474x

###########################
Clear 2500000 small objects
###########################
std::unordered_map clear                                      0.288281s        1.000000x
std::map clear                                                0.181371s        1.589450x
fea::flat_unsigned_hashmap clear                              0.006041s        47.719129x

#########################
Clear 2500000 big objects
#########################
std::map clear                                                1.448521s        1.000000x
std::unordered_map clear                                      1.013410s        1.429353x
fea::flat_unsigned_hashmap clear                              0.005665s        255.701036x

############################
Insert 2500000 small objects
############################
std::unordered_map insert                                     0.339890s        1.000000x
std::map insert                                               0.319938s        1.062361x
fea::flat_unsigned_hashmap insert                             0.120231s        2.826964x

##########################
Insert 2500000 big objects
##########################
std::unordered_map insert                                     2.034309s        1.000000x
std::map insert                                               1.287234s        1.580372x
fea::flat_unsigned_hashmap insert                             0.438080s        4.643693x

###########################################
Erase 2500000 (all) small objects at random
###########################################
std::map erase                                                2.108869s        1.000000x
std::unordered_map erase                                      0.636455s        3.313463x
fea::flat_unsigned_hashmap erase                              0.209144s        10.083316x

#########################################
Erase 2500000 (all) big objects at random
#########################################
std::map erase                                                4.347437s        1.000000x
std::unordered_map erase                                      3.049826s        1.425471x
fea::flat_unsigned_hashmap erase                              0.655642s        6.630808x

##########################################
Insert 2500000 small objects after reserve
##########################################
std::unordered_map insert                                     0.374243s        1.000000x
std::map insert                                               0.318082s        1.176563x
fea::flat_unsigned_hashmap insert                             0.123666s        3.026231x

########################################
Insert 2500000 big objects after reserve
########################################
std::unordered_map insert                                     2.526809s        1.000000x
std::map insert                                               2.070252s        1.220532x
fea::flat_unsigned_hashmap insert                             0.443182s        5.701518x

##############################################
Iterate 2500000 small objects and assign value
##############################################
std::map iterate & assign                                     0.078551s        1.000000x
std::unordered_map iterate & assign                           0.068977s        1.138801x
fea::flat_unsigned_hashmap iterate & assign                   0.037631s        2.087387x

############################################
Iterate 2500000 big objects and assign value
############################################
std::map iterate & assign                                     0.295600s        1.000000x
std::unordered_map iterate & assign                           0.279349s        1.058173x
fea::flat_unsigned_hashmap iterate & assign                   0.240102s        1.231146x



############################################################
Benchmark using 5000000 random uniform distribution keys, with duplicates
############################################################
Num unique keys : 1227108

###############################
Copy ctor 1227108 small objects
###############################
std::unordered_map copy ctor                                  0.442366s        1.000000x
std::map copy ctor                                            0.349513s        1.265665x
fea::flat_unsigned_hashmap copy ctor                          0.026470s        16.711798x

#############################
Copy ctor 1227108 big objects
#############################
std::map copy ctor                                            1.563192s        1.000000x
std::unordered_map copy ctor                                  0.916167s        1.706231x
fea::flat_unsigned_hashmap copy ctor                          0.613625s        2.547472x

###########################
Clear 1227108 small objects
###########################
std::map clear                                                0.258953s        1.000000x
std::unordered_map clear                                      0.253569s        1.021231x
fea::flat_unsigned_hashmap clear                              0.003037s        85.257498x

#########################
Clear 1227108 big objects
#########################
std::map clear                                                1.812998s        1.000000x
std::unordered_map clear                                      0.995790s        1.820663x
fea::flat_unsigned_hashmap clear                              0.002563s        707.262893x

############################
Insert 5000000 small objects
############################
std::map insert                                               3.121570s        1.000000x
std::unordered_map insert                                     0.384055s        8.127932x
fea::flat_unsigned_hashmap insert                             0.243779s        12.804909x

##########################
Insert 5000000 big objects
##########################
std::map insert                                               5.610653s        1.000000x
std::unordered_map insert                                     2.448988s        2.291008x
fea::flat_unsigned_hashmap insert                             0.601690s        9.324822x

###########################################
Erase 1227108 (all) small objects at random
###########################################
std::map erase                                                3.006474s        1.000000x
std::unordered_map erase                                      0.354466s        8.481700x
fea::flat_unsigned_hashmap erase                              0.181084s        16.602678x

#########################################
Erase 1227108 (all) big objects at random
#########################################
std::map erase                                                4.457639s        1.000000x
std::unordered_map erase                                      1.862029s        2.393969x
fea::flat_unsigned_hashmap erase                              0.389508s        11.444273x

##########################################
Insert 5000000 small objects after reserve
##########################################
std::map insert                                               3.326453s        1.000000x
std::unordered_map insert                                     0.455664s        7.300227x
fea::flat_unsigned_hashmap insert                             0.264610s        12.571148x

########################################
Insert 5000000 big objects after reserve
########################################
std::map insert                                               6.126258s        1.000000x
std::unordered_map insert                                     2.625268s        2.333575x
fea::flat_unsigned_hashmap insert                             0.968102s        6.328111x

##############################################
Iterate 1227108 small objects and assign value
##############################################
std::map iterate & assign                                     0.128183s        1.000000x
std::unordered_map iterate & assign                           0.028742s        4.459832x
fea::flat_unsigned_hashmap iterate & assign                   0.018366s        6.979386x

############################################
Iterate 1227108 big objects and assign value
############################################
std::map iterate & assign                                     0.266281s        1.000000x
std::unordered_map iterate & assign                           0.127836s        2.082981x
fea::flat_unsigned_hashmap iterate & assign                   0.115270s        2.310052x



####################################################
Benchmark using 5000000 rand() keys, many duplicates
####################################################
Num unique keys : 32768

#############################
Copy ctor 32768 small objects
#############################
std::unordered_map copy ctor                                  0.003367s        1.000000x
std::map copy ctor                                            0.003234s        1.040904x
fea::flat_unsigned_hashmap copy ctor                          0.000690s        4.880690x

###########################
Copy ctor 32768 big objects
###########################
fea::flat_unsigned_hashmap copy ctor                          0.017153s        1.000000x
std::map copy ctor                                            0.012825s        1.337445x
std::unordered_map copy ctor                                  0.011261s        1.523146x

#########################
Clear 32768 small objects
#########################
std::map clear                                                0.002178s        1.000000x
std::unordered_map clear                                      0.001078s        2.020967x
fea::flat_unsigned_hashmap clear                              0.000104s        20.986513x

#######################
Clear 32768 big objects
#######################
std::map clear                                                0.004677s        1.000000x
std::unordered_map clear                                      0.003574s        1.308359x
fea::flat_unsigned_hashmap clear                              0.000106s        44.202268x

#############################
Insert 20000000 small objects
#############################
std::map insert                                               2.765860s        1.000000x
std::unordered_map insert                                     0.265089s        10.433702x
fea::flat_unsigned_hashmap insert                             0.249528s        11.084366x

###########################
Insert 20000000 big objects
###########################
std::map insert                                               6.262053s        1.000000x
std::unordered_map insert                                     2.070184s        3.024877x
fea::flat_unsigned_hashmap insert                             0.653995s        9.575076x

#########################################
Erase 32768 (all) small objects at random
#########################################
fea::flat_unsigned_hashmap erase                              0.151920s        1.000000x
std::unordered_map erase                                      0.112697s        1.348042x
std::map erase                                                0.092785s        1.637332x

#######################################
Erase 32768 (all) big objects at random
#######################################
fea::flat_unsigned_hashmap erase                              0.156057s        1.000000x
std::unordered_map erase                                      0.113882s        1.370347x
std::map erase                                                0.102572s        1.521440x

###########################################
Insert 20000000 small objects after reserve
###########################################
std::map insert                                               2.733880s        1.000000x
std::unordered_map insert                                     0.452906s        6.036315x
fea::flat_unsigned_hashmap insert                             0.242918s        11.254338x

#########################################
Insert 20000000 big objects after reserve
#########################################
std::map insert                                               6.304130s        1.000000x
std::unordered_map insert                                     3.077564s        2.048416x
fea::flat_unsigned_hashmap insert                             0.670298s        9.404971x

############################################
Iterate 32768 small objects and assign value
############################################
std::map iterate & assign                                     0.001559s        1.000000x
std::unordered_map iterate & assign                           0.000768s        2.030070x
fea::flat_unsigned_hashmap iterate & assign                   0.000493s        3.161362x

##########################################
Iterate 32768 big objects and assign value
##########################################
std::map iterate & assign                                     0.005469s        1.000000x
std::unordered_map iterate & assign                           0.003355s        1.629948x
fea::flat_unsigned_hashmap iterate & assign                   0.003018s        1.811941x