nervosnetwork / sparse-merkle-tree

46 stars 37 forks source link

chore: add smt-db crate #29

Closed jjyr closed 1 year ago

jjyr commented 2 years ago

Changes

Benchmark:

SMT with RocksDB

SMT update/100          time:   [99.160 ms 107.28 ms 110.97 ms]                         
                        change: [-3.0707% +6.4933% +17.121%] (p = 0.25 > 0.05)
                        No change in performance detected.
SMT update/10000        time:   [27.515 s 30.076 s 31.359 s]                              
                        change: [-19.534% +0.5083% +21.710%] (p = 0.96 > 0.05)
                        No change in performance detected.

SMT update_all/100      time:   [89.122 ms 92.608 ms 94.160 ms]                             
                        change: [-8.3797% -0.3715% +8.4326%] (p = 0.94 > 0.05)
                        No change in performance detected.
SMT update_all/10000    time:   [21.495 s 24.309 s 25.733 s]                                  

SMT get/5000            time:   [3.4688 us 3.9089 us 4.9106 us]                       
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high mild
SMT get/10000           time:   [3.2811 us 3.7924 us 4.9068 us]                        
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high mild

SMT generate merkle proof                                                                          
                        time:   [6.9455 ms 7.0757 ms 7.3460 ms]
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe

SMT verify merkle proof time:   [183.71 us 188.18 us 194.02 us]                                  

SMT in memory

SMT update/100          time:   [4.4720 ms 4.4818 ms 4.5018 ms]                           
                        change: [-4.4779% -2.2432% +0.5912%] (p = 0.12 > 0.05)
                        No change in performance detected.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe
SMT update/10000        time:   [882.00 ms 883.88 ms 885.70 ms]                           
                        change: [-7.5675% -4.5322% -2.0604%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) low mild

SMT update_all/100      time:   [4.6481 ms 4.6659 ms 4.6861 ms]                               
                        change: [-2.7616% -1.1522% +0.5261%] (p = 0.23 > 0.05)
                        No change in performance detected.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe
SMT update_all/10000    time:   [877.32 ms 880.29 ms 882.37 ms]                               
                        change: [-2.1313% -1.1632% -0.3947%] (p = 0.01 < 0.05)
                        Change within noise threshold.

SMT get/5000            time:   [80.297 ns 85.582 ns 92.246 ns]                        
                        change: [-33.495% -17.457% +1.7118%] (p = 0.14 > 0.05)
                        No change in performance detected.
SMT get/10000           time:   [111.91 ns 129.07 ns 149.09 ns]                        
                        change: [-38.271% -5.4309% +38.948%] (p = 0.81 > 0.05)
                        No change in performance detected.
Found 2 outliers among 10 measurements (20.00%)
  1 (10.00%) low severe
  1 (10.00%) high severe

SMT generate merkle proof                                                                          
                        time:   [574.99 us 592.94 us 636.30 us]
                        change: [-21.418% +0.6140% +30.880%] (p = 0.97 > 0.05)
                        No change in performance detected.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe

SMT verify merkle proof time:   [187.90 us 190.26 us 194.89 us]                                  
                        change: [-4.2787% -0.6486% +2.9833%] (p = 0.74 > 0.05)
                        No change in performance detected.
quake commented 1 year ago

close with a repo: https://github.com/quake/smt-rocksdb-store