1. 04 Mar, 2018 7 commits
  2. 02 Mar, 2018 6 commits
  3. 01 Mar, 2018 2 commits
  4. 28 Feb, 2018 9 commits
  5. 27 Feb, 2018 2 commits
  6. 26 Feb, 2018 5 commits
  7. 23 Feb, 2018 1 commit
    • Kirill Smelkov's avatar
      X teach golang to access ZEO · a16e8d52
      Kirill Smelkov authored
      For the reference on deco (performance, frequence not fixed):
      
      	name                           time/object
      	deco/fs1/zhash.py              15.8µs ± 2%
      	deco/fs1/zhash.py-P16           116µs ±12%
      	deco/fs1/zhash.go              2.60µs ± 0%
      	deco/fs1/zhash.go+prefetch128  3.70µs ±11%
      	deco/fs1/zhash.go-P16          13.4µs ±43%
      	deco/zeo/zhash.py               316µs ± 7%
      	deco/zeo/zhash.py-P16          2.68ms ± 7%
      	deco/zeo/zhash.go               111µs ± 2%
      	deco/zeo/zhash.go+prefetch128  57.7µs ± 2%
      	deco/zeo/zhash.go-P16          1.23ms ± 5%
      a16e8d52
  8. 22 Feb, 2018 2 commits
    • Kirill Smelkov's avatar
      X rio: localhost timings (only performance governor, C-states are enabled, turbo not disabled...) · 39a77e3b
      Kirill Smelkov authored
      Compared to 55a64368 (rio localhost; 2017-11-06) the change is in kernel:
      
      -# Linux rio 4.13.0-1-amd64 #1 SMP Debian 4.13.4-2 (2017-10-15) x86_64 GNU/Linux
      +# Linux rio 4.15.0-1-amd64 #1 SMP Debian 4.15.4-1 (2018-02-18) x86_64 GNU/Linux
      
      and in particular 4.15 comes with PTI.
      
      summary:
      
      - direct disk 4K read is ~ 93µs as it was
      - pagecache is now slower due to PTI: the timing changed 0.6µs -> 0.8µs
      - fs1.py access is ~2% slower, probably due to PTI
      - fs1.go access is much slower due to client cache being always bolted
        on: 2.4µs -> 3.8µs (serial). The time for both serial and parallel
        cases is still small.
      - zeo is ~2% slower, probably due to PTI.
      - neo/py/sqlite vs zhash.py is 8% faster - because we removed
        data compression from the benchmark (b9827725), however P16 time is
        not improved.
      - neo/py/sqlite vs zhash.go is 40% faster - because we removed data
        compression from the benchmark and previously neo/go code was very
        inefficient at zlib decompression (924831e7, 9acb87a8, 57524491).
        However P16 time is improved only by 2-5%.
      - neo/py/sql vs zhash.{py,go} - similar changes to neo/py/sqlite
      - neo/go/fs1 vs zhash.py - unchanged; vs zhash.go - slower by 12% -
        probably due to PTI. zhash.go P16 case is improved by ~35% but it
        could be all noise.
      - newly introduces neo/go/sqlite vs zhash.go is at ~ 80-88µs for serial
        and ~ 230-300µs for P16 latencies (neo/py/sqlite for the same vs
        zhash.go is at ~ 120-130µs for serial and ~1600µs for P16 latencies).
        Clearly neo/go/sqlite needs more work.
      
      Full details:
      
      $ benchstat -split dataset 20180222-rio.txt  |grep sqlite |grep 'neo.go'
      rio/neo/go/sqlite/zhash.py                      230µs ± 2%
      rio/neo/go/sqlite/zhash.py-P16                  937µs ± 5%
      rio/neo/go/sqlite/zhash.go                     88.4µs ± 2%
      rio/neo/go/sqlite/zhash.go+prefetch128         33.6µs ± 7%
      rio/neo/go/sqlite/zhash.go-P16                  228µs ±39%
      rio/neo/go/sqlite(!sha1)/zhash.go              79.7µs ± 3%
      rio/neo/go/sqlite(!sha1)/zhash.go+prefetch128  32.2µs ± 8%
      rio/neo/go/sqlite(!sha1)/zhash.go-P16           213µs ±42%
      rio/neo/go/sqlite/zhash.py                      232µs ± 2%
      rio/neo/go/sqlite/zhash.py-P16                 1.00ms ± 3%
      rio/neo/go/sqlite/zhash.go                     79.2µs ± 2%
      rio/neo/go/sqlite/zhash.go+prefetch128         29.8µs ± 8%
      rio/neo/go/sqlite/zhash.go-P16                  302µs ±40%
      rio/neo/go/sqlite(!sha1)/zhash.go              78.3µs ± 2%
      rio/neo/go/sqlite(!sha1)/zhash.go+prefetch128  31.1µs ± 2%
      rio/neo/go/sqlite(!sha1)/zhash.go-P16           311µs ±40%
      
      $ benchstat -split dataset 20171106-time-rio-Cenabled.txt 20180222-rio.txt
      
      name                                          old pystone/s    new pystone/s    delta
      rio/pystone                                         178k ± 2%        180k ± 3%      ~     (p=0.421 n=5+5)
      
      name                                          old time/op      new time/op      delta
      rio/disk/randread/direct/4K-min                   34.0µs ± 1%      34.7µs ± 1%    +2.06%  (p=0.008 n=5+5)
      rio/disk/randread/direct/4K-avg                   92.9µs ± 0%      93.2µs ± 0%    +0.37%  (p=0.024 n=5+5)
      rio/disk/randread/pagecache/4K-min                 221ns ± 0%       441ns ± 0%   +99.37%  (p=0.016 n=4+5)
      rio/disk/randread/pagecache/4K-avg                 637ns ± 0%       872ns ± 1%   +37.01%  (p=0.016 n=4+5)
      
      name                                          old time/object  new time/object  delta
      dataset:wczblk1-8
      rio/fs1/zhash.py                                  22.3µs ± 2%      22.8µs ± 2%    +2.24%  (p=0.048 n=5+5)
      rio/fs1/zhash.py-P16                              51.7µs ±72%      60.3µs ±49%      ~     (p=0.127 n=15+16)
      rio/fs1/zhash.go                                  2.40µs ± 0%      3.80µs ± 0%   +58.33%  (p=0.016 n=5+4)
      rio/fs1/zhash.go+prefetch128                      4.34µs ± 8%      4.10µs ± 2%      ~     (p=0.246 n=5+5)
      rio/fs1/zhash.go-P16                              3.58µs ±24%      6.79µs ±19%   +90.01%  (p=0.000 n=16+14)
      rio/zeo/zhash.py                                   336µs ± 2%       342µs ± 2%    +1.82%  (p=0.040 n=5+5)
      rio/zeo/zhash.py-P16                              1.61ms ±19%      1.64ms ±20%      ~     (p=0.423 n=16+16)
      rio/neo/py/sqlite/zhash.py                         304µs ± 6%       279µs ± 3%    -8.11%  (p=0.016 n=5+5)
      rio/neo/py/sqlite/zhash.py-P16                    2.19ms ± 0%      2.28ms ± 1%    +4.16%  (p=0.000 n=13+15)
      rio/neo/py/sqlite/zhash.go                         248µs ± 1%       147µs ± 2%   -40.70%  (p=0.008 n=5+5)
      rio/neo/py/sqlite/zhash.go+prefetch128             125µs ± 1%       125µs ± 2%      ~     (p=0.651 n=5+5)
      rio/neo/py/sqlite/zhash.go-P16                    1.76ms ±13%      1.73ms ±14%    -1.72%  (p=0.002 n=16+16)
      rio/neo/py(!log)/sqlite/zhash.py                   291µs ± 2%       267µs ± 1%    -8.20%  (p=0.008 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.py-P16              2.01ms ± 2%      2.01ms ± 1%      ~     (p=0.545 n=16+15)
      rio/neo/py(!log)/sqlite/zhash.go                   231µs ± 1%       130µs ± 2%   -43.54%  (p=0.008 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.go+prefetch128       110µs ± 2%       112µs ± 4%      ~     (p=0.222 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.go-P16              1.62ms ± 7%      1.62ms ± 0%    +0.18%  (p=0.029 n=16+11)
      rio/neo/py/sql/zhash.py                            325µs ± 4%       294µs ± 1%    -9.50%  (p=0.029 n=4+4)
      rio/neo/py/sql/zhash.py-P16                       2.88ms ± 1%      2.85ms ± 1%    -0.94%  (p=0.000 n=15+15)
      rio/neo/py/sql/zhash.go                            275µs ± 2%       169µs ± 3%   -38.39%  (p=0.008 n=5+5)
      rio/neo/py/sql/zhash.go+prefetch128                154µs ± 3%       154µs ± 4%      ~     (p=1.000 n=5+5)
      rio/neo/py/sql/zhash.go-P16                       2.30ms ± 8%      2.19ms ±11%    -5.03%  (p=0.009 n=16+16)
      rio/neo/py(!log)/sql/zhash.py                      313µs ± 4%       285µs ± 5%    -8.95%  (p=0.029 n=4+4)
      rio/neo/py(!log)/sql/zhash.py-P16                 2.56ms ± 1%      2.47ms ± 1%    -3.45%  (p=0.000 n=15+14)
      rio/neo/py(!log)/sql/zhash.go                      258µs ± 1%       152µs ± 1%   -41.05%  (p=0.016 n=5+4)
      rio/neo/py(!log)/sql/zhash.go+prefetch128          139µs ± 1%       137µs ± 3%      ~     (p=0.151 n=5+5)
      rio/neo/py(!log)/sql/zhash.go-P16                 2.21ms ± 5%      1.98ms ± 0%   -10.19%  (p=0.000 n=16+11)
      rio/neo/go/fs1/zhash.py                            190µs ± 3%       190µs ± 4%      ~     (p=1.000 n=5+5)
      rio/neo/go/fs1/zhash.py-P16                        784µs ± 9%       755µs ± 7%    -3.69%  (p=0.018 n=16+16)
      rio/neo/go/fs1/zhash.go                           52.0µs ± 1%      58.0µs ± 3%   +11.55%  (p=0.008 n=5+5)
      rio/neo/go/fs1/zhash.go+prefetch128               26.6µs ± 5%      24.9µs ± 4%      ~     (p=0.087 n=5+5)
      rio/neo/go/fs1/zhash.go-P16                        256µs ± 6%       164µs ±50%   -36.13%  (p=0.000 n=15+16)
      rio/neo/go/fs1(!sha1)/zhash.go                    35.3µs ± 4%      37.3µs ± 2%    +5.73%  (p=0.008 n=5+5)
      rio/neo/go/fs1(!sha1)/zhash.go+prefetch128        17.3µs ± 2%      16.3µs ± 2%    -6.00%  (p=0.008 n=5+5)
      rio/neo/go/fs1(!sha1)/zhash.go-P16                 152µs ±13%       118µs ±51%   -22.57%  (p=0.000 n=13+16)
      dataset:prod1-1024
      rio/fs1/zhash.py                                  18.9µs ± 1%      18.9µs ± 2%      ~     (p=0.825 n=5+5)
      rio/fs1/zhash.py-P16                              58.0µs ±52%      56.2µs ±32%      ~     (p=0.926 n=16+16)
      rio/fs1/zhash.go                                  1.30µs ± 0%      2.80µs ± 0%  +115.38%  (p=0.016 n=4+5)
      rio/fs1/zhash.go+prefetch128                      2.78µs ±14%      2.70µs ± 0%      ~     (p=0.413 n=5+4)
      rio/fs1/zhash.go-P16                              2.24µs ±16%      6.59µs ±43%  +194.93%  (p=0.000 n=14+16)
      rio/zeo/zhash.py                                   302µs ± 7%       294µs ± 6%      ~     (p=0.310 n=5+5)
      rio/zeo/zhash.py-P16                              1.44ms ±11%      1.46ms ± 3%      ~     (p=0.892 n=15+13)
      rio/neo/py/sqlite/zhash.py                         269µs ± 1%       275µs ± 1%    +2.51%  (p=0.008 n=5+5)
      rio/neo/py/sqlite/zhash.py-P16                    2.19ms ± 0%      2.34ms ± 0%    +6.70%  (p=0.000 n=16+13)
      rio/neo/py/sqlite/zhash.go                         158µs ± 1%       140µs ± 3%   -11.68%  (p=0.008 n=5+5)
      rio/neo/py/sqlite/zhash.go+prefetch128             116µs ± 3%       118µs ± 1%      ~     (p=0.111 n=5+5)
      rio/neo/py/sqlite/zhash.go-P16                    1.90ms ± 0%      1.81ms ± 7%    -4.58%  (p=0.000 n=14+16)
      rio/neo/py(!log)/sqlite/zhash.py                   259µs ± 4%       262µs ± 3%      ~     (p=0.690 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.py-P16              1.89ms ± 1%      2.04ms ± 0%    +7.53%  (p=0.000 n=15+15)
      rio/neo/py(!log)/sqlite/zhash.go                   142µs ± 1%       123µs ± 2%   -13.14%  (p=0.008 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.go+prefetch128       101µs ± 2%       103µs ± 1%    +2.37%  (p=0.008 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.go-P16              1.57ms ± 0%      1.61ms ± 5%      ~     (p=0.089 n=13+16)
      rio/neo/py/sql/zhash.py                            337µs ±43%       298µs ± 3%      ~     (p=0.556 n=5+4)
      rio/neo/py/sql/zhash.py-P16                       2.73ms ± 0%      2.86ms ± 0%    +4.74%  (p=0.000 n=15+15)
      rio/neo/py/sql/zhash.go                            186µs ± 3%       164µs ± 4%   -11.92%  (p=0.008 n=5+5)
      rio/neo/py/sql/zhash.go+prefetch128                145µs ± 2%       147µs ± 2%      ~     (p=0.095 n=5+5)
      rio/neo/py/sql/zhash.go-P16                       2.29ms ± 6%      2.27ms ± 6%    -1.19%  (p=0.002 n=16+16)
      rio/neo/py(!log)/sql/zhash.py                      293µs ± 4%       287µs ± 2%      ~     (p=0.343 n=4+4)
      rio/neo/py(!log)/sql/zhash.py-P16                 2.47ms ± 0%      2.51ms ± 1%    +1.61%  (p=0.000 n=15+15)
      rio/neo/py(!log)/sql/zhash.go                      168µs ± 1%       146µs ± 2%   -13.49%  (p=0.008 n=5+5)
      rio/neo/py(!log)/sql/zhash.go+prefetch128          130µs ± 2%       127µs ± 2%      ~     (p=0.056 n=5+5)
      rio/neo/py(!log)/sql/zhash.go-P16                 2.08ms ± 3%      2.00ms ± 4%    -3.98%  (p=0.009 n=16+16)
      rio/neo/go/fs1/zhash.py                            181µs ± 5%       189µs ± 9%      ~     (p=0.079 n=5+5)
      rio/neo/go/fs1/zhash.py-P16                        714µs ± 6%       711µs ± 3%      ~     (p=0.861 n=15+16)
      rio/neo/go/fs1/zhash.go                           36.9µs ± 3%      41.8µs ± 2%   +13.21%  (p=0.008 n=5+5)
      rio/neo/go/fs1/zhash.go+prefetch128               16.5µs ± 1%      16.8µs ± 3%      ~     (p=0.103 n=5+5)
      rio/neo/go/fs1/zhash.go-P16                        239µs ± 4%       195µs ± 4%   -18.37%  (p=0.000 n=15+13)
      rio/neo/go/fs1(!sha1)/zhash.go                    32.7µs ± 7%      36.3µs ± 2%   +11.07%  (p=0.008 n=5+5)
      rio/neo/go/fs1(!sha1)/zhash.go+prefetch128        13.5µs ± 1%      13.9µs ± 4%      ~     (p=0.056 n=5+5)
      rio/neo/go/fs1(!sha1)/zhash.go-P16                 190µs ± 7%       138µs ±60%   -27.42%  (p=0.000 n=14+16)
      
      name                                          old pystone/s    new pystone/s    delta
      rio/pystone                                         178k ± 2%        180k ± 3%      ~     (p=0.421 n=5+5)
      
      name                                          old time/op      new time/op      delta
      rio/disk/randread/direct/4K-min                   34.0µs ± 1%      34.7µs ± 1%    +2.06%  (p=0.008 n=5+5)
      rio/disk/randread/direct/4K-avg                   92.9µs ± 0%      93.2µs ± 0%    +0.37%  (p=0.024 n=5+5)
      rio/disk/randread/pagecache/4K-min                 221ns ± 0%       441ns ± 0%   +99.37%  (p=0.016 n=4+5)
      rio/disk/randread/pagecache/4K-avg                 637ns ± 0%       872ns ± 1%   +37.01%  (p=0.016 n=4+5)
      
      name                                          old time/object  new time/object  delta
      dataset:wczblk1-8
      rio/fs1/zhash.py                                  22.3µs ± 2%      22.8µs ± 2%    +2.24%  (p=0.048 n=5+5)
      rio/fs1/zhash.py-P16                              51.7µs ±72%      60.3µs ±49%      ~     (p=0.127 n=15+16)
      rio/fs1/zhash.go                                  2.40µs ± 0%      3.80µs ± 0%   +58.33%  (p=0.016 n=5+4)
      rio/fs1/zhash.go+prefetch128                      4.34µs ± 8%      4.10µs ± 2%      ~     (p=0.246 n=5+5)
      rio/fs1/zhash.go-P16                              3.58µs ±24%      6.79µs ±19%   +90.01%  (p=0.000 n=16+14)
      rio/zeo/zhash.py                                   336µs ± 2%       342µs ± 2%    +1.82%  (p=0.040 n=5+5)
      rio/zeo/zhash.py-P16                              1.61ms ±19%      1.64ms ±20%      ~     (p=0.423 n=16+16)
      rio/neo/py/sqlite/zhash.py                         304µs ± 6%       279µs ± 3%    -8.11%  (p=0.016 n=5+5)
      rio/neo/py/sqlite/zhash.py-P16                    2.19ms ± 0%      2.28ms ± 1%    +4.16%  (p=0.000 n=13+15)
      rio/neo/py/sqlite/zhash.go                         248µs ± 1%       147µs ± 2%   -40.70%  (p=0.008 n=5+5)
      rio/neo/py/sqlite/zhash.go+prefetch128             125µs ± 1%       125µs ± 2%      ~     (p=0.651 n=5+5)
      rio/neo/py/sqlite/zhash.go-P16                    1.76ms ±13%      1.73ms ±14%    -1.72%  (p=0.002 n=16+16)
      rio/neo/py(!log)/sqlite/zhash.py                   291µs ± 2%       267µs ± 1%    -8.20%  (p=0.008 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.py-P16              2.01ms ± 2%      2.01ms ± 1%      ~     (p=0.545 n=16+15)
      rio/neo/py(!log)/sqlite/zhash.go                   231µs ± 1%       130µs ± 2%   -43.54%  (p=0.008 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.go+prefetch128       110µs ± 2%       112µs ± 4%      ~     (p=0.222 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.go-P16              1.62ms ± 7%      1.62ms ± 0%    +0.18%  (p=0.029 n=16+11)
      rio/neo/py/sql/zhash.py                            325µs ± 4%       294µs ± 1%    -9.50%  (p=0.029 n=4+4)
      rio/neo/py/sql/zhash.py-P16                       2.88ms ± 1%      2.85ms ± 1%    -0.94%  (p=0.000 n=15+15)
      rio/neo/py/sql/zhash.go                            275µs ± 2%       169µs ± 3%   -38.39%  (p=0.008 n=5+5)
      rio/neo/py/sql/zhash.go+prefetch128                154µs ± 3%       154µs ± 4%      ~     (p=1.000 n=5+5)
      rio/neo/py/sql/zhash.go-P16                       2.30ms ± 8%      2.19ms ±11%    -5.03%  (p=0.009 n=16+16)
      rio/neo/py(!log)/sql/zhash.py                      313µs ± 4%       285µs ± 5%    -8.95%  (p=0.029 n=4+4)
      rio/neo/py(!log)/sql/zhash.py-P16                 2.56ms ± 1%      2.47ms ± 1%    -3.45%  (p=0.000 n=15+14)
      rio/neo/py(!log)/sql/zhash.go                      258µs ± 1%       152µs ± 1%   -41.05%  (p=0.016 n=5+4)
      rio/neo/py(!log)/sql/zhash.go+prefetch128          139µs ± 1%       137µs ± 3%      ~     (p=0.151 n=5+5)
      rio/neo/py(!log)/sql/zhash.go-P16                 2.21ms ± 5%      1.98ms ± 0%   -10.19%  (p=0.000 n=16+11)
      dataset:prod1-1024
      rio/fs1/zhash.py                                  18.9µs ± 1%      18.9µs ± 2%      ~     (p=0.825 n=5+5)
      rio/fs1/zhash.py-P16                              58.0µs ±52%      56.2µs ±32%      ~     (p=0.926 n=16+16)
      rio/fs1/zhash.go                                  1.30µs ± 0%      2.80µs ± 0%  +115.38%  (p=0.016 n=4+5)
      rio/fs1/zhash.go+prefetch128                      2.78µs ±14%      2.70µs ± 0%      ~     (p=0.413 n=5+4)
      rio/fs1/zhash.go-P16                              2.24µs ±16%      6.59µs ±43%  +194.93%  (p=0.000 n=14+16)
      rio/zeo/zhash.py                                   302µs ± 7%       294µs ± 6%      ~     (p=0.310 n=5+5)
      rio/zeo/zhash.py-P16                              1.44ms ±11%      1.46ms ± 3%      ~     (p=0.892 n=15+13)
      rio/neo/py/sqlite/zhash.py                         269µs ± 1%       275µs ± 1%    +2.51%  (p=0.008 n=5+5)
      rio/neo/py/sqlite/zhash.py-P16                    2.19ms ± 0%      2.34ms ± 0%    +6.70%  (p=0.000 n=16+13)
      rio/neo/py/sqlite/zhash.go                         158µs ± 1%       140µs ± 3%   -11.68%  (p=0.008 n=5+5)
      rio/neo/py/sqlite/zhash.go+prefetch128             116µs ± 3%       118µs ± 1%      ~     (p=0.111 n=5+5)
      rio/neo/py/sqlite/zhash.go-P16                    1.90ms ± 0%      1.81ms ± 7%    -4.58%  (p=0.000 n=14+16)
      rio/neo/py(!log)/sqlite/zhash.py                   259µs ± 4%       262µs ± 3%      ~     (p=0.690 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.py-P16              1.89ms ± 1%      2.04ms ± 0%    +7.53%  (p=0.000 n=15+15)
      rio/neo/py(!log)/sqlite/zhash.go                   142µs ± 1%       123µs ± 2%   -13.14%  (p=0.008 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.go+prefetch128       101µs ± 2%       103µs ± 1%    +2.37%  (p=0.008 n=5+5)
      rio/neo/py(!log)/sqlite/zhash.go-P16              1.57ms ± 0%      1.61ms ± 5%      ~     (p=0.089 n=13+16)
      rio/neo/py/sql/zhash.py                            337µs ±43%       298µs ± 3%      ~     (p=0.556 n=5+4)
      rio/neo/py/sql/zhash.py-P16                       2.73ms ± 0%      2.86ms ± 0%    +4.74%  (p=0.000 n=15+15)
      rio/neo/py/sql/zhash.go                            186µs ± 3%       164µs ± 4%   -11.92%  (p=0.008 n=5+5)
      rio/neo/py/sql/zhash.go+prefetch128                145µs ± 2%       147µs ± 2%      ~     (p=0.095 n=5+5)
      rio/neo/py/sql/zhash.go-P16                       2.29ms ± 6%      2.27ms ± 6%    -1.19%  (p=0.002 n=16+16)
      rio/neo/py(!log)/sql/zhash.py                      293µs ± 4%       287µs ± 2%      ~     (p=0.343 n=4+4)
      rio/neo/py(!log)/sql/zhash.py-P16                 2.47ms ± 0%      2.51ms ± 1%    +1.61%  (p=0.000 n=15+15)
      rio/neo/py(!log)/sql/zhash.go                      168µs ± 1%       146µs ± 2%   -13.49%  (p=0.008 n=5+5)
      rio/neo/py(!log)/sql/zhash.go+prefetch128          130µs ± 2%       127µs ± 2%      ~     (p=0.056 n=5+5)
      rio/neo/py(!log)/sql/zhash.go-P16                 2.08ms ± 3%      2.00ms ± 4%    -3.98%  (p=0.009 n=16+16)
      39a77e3b
    • Kirill Smelkov's avatar
      . · 4bcbc04d
      Kirill Smelkov authored
      4bcbc04d
  9. 21 Feb, 2018 6 commits
    • Kirill Smelkov's avatar
      X switch to using no compression, because this way it is more fair for comparing storage latencies · b9827725
      Kirill Smelkov authored
      benchstat 20180221-deco-noturbo.txt 20180221-deco-noturbo-noz.txt
      
      name                                            old pystone/s    new pystone/s    delta
      deco/pystone                                          220k ± 1%        221k ± 0%     ~     (p=1.000 n=5+5)
      
      name                                            old time/op      new time/op      delta
      deco/sha1/py/1K                                     1.83µs ± 1%      1.85µs ± 2%     ~     (p=0.167 n=5+5)
      deco/sha1/go/1K                                     1.53µs ± 0%      1.53µs ± 0%     ~     (p=0.556 n=4+5)
      deco/sha1/py/4K                                     6.68µs ± 1%      6.68µs ± 1%     ~     (p=0.802 n=5+5)
      deco/sha1/go/4K                                     5.59µs ± 0%      5.59µs ± 0%     ~     (p=0.151 n=5+5)
      deco/sha1/py/2M                                     3.19ms ± 0%      3.18ms ± 0%     ~     (p=0.310 n=5+5)
      deco/sha1/go/2M                                     2.78ms ± 0%      2.78ms ± 0%     ~     (p=0.222 n=5+5)
      deco/unzlib/py/null-1K                              2.83µs ± 2%      2.81µs ± 0%     ~     (p=0.516 n=5+5)
      deco/unzlib/go/null-1K                              2.87µs ± 1%      2.86µs ± 0%     ~     (p=0.198 n=5+5)
      deco/unzlib/py/null-4K                              11.3µs ± 0%      11.3µs ± 1%     ~     (p=0.794 n=4+5)
      deco/unzlib/go/null-4K                              11.3µs ± 0%      11.3µs ± 0%     ~     (p=0.548 n=5+5)
      deco/unzlib/py/null-2M                              6.01ms ±19%      5.71ms ± 5%     ~     (p=0.421 n=5+5)
      deco/unzlib/go/null-2M                              4.79ms ± 0%      4.79ms ± 0%     ~     (p=0.095 n=5+5)
      deco/unzlib/py/wczdata-avg                          27.2µs ± 1%      27.2µs ± 1%     ~     (p=0.841 n=5+5)
      deco/unzlib/go/wczdata-avg                          26.7µs ± 0%      26.7µs ± 0%     ~     (p=0.841 n=5+5)
      deco/unzlib/py/wczdata-max                          26.7µs ± 1%      26.6µs ± 0%     ~     (p=0.222 n=5+5)
      deco/unzlib/go/wczdata-max                          26.5µs ± 0%      26.5µs ± 0%     ~     (p=0.421 n=5+5)
      deco/unzlib/py/prod1-avg                            6.08µs ±23%      5.02µs ± 1%  -17.40%  (p=0.032 n=5+4)
      deco/unzlib/go/prod1-avg                            5.25µs ± 0%      5.27µs ± 1%     ~     (p=1.000 n=5+5)
      deco/unzlib/py/prod1-max                             510µs ± 1%       512µs ± 2%     ~     (p=1.000 n=4+5)
      deco/unzlib/go/prod1-max                             336µs ± 0%       336µs ± 0%     ~     (p=0.421 n=5+5)
      deco/disk/randread/direct/4K-min                     104µs ± 0%       105µs ± 1%     ~     (p=0.357 n=5+5)
      deco/disk/randread/direct/4K-avg                     143µs ± 1%       144µs ± 0%     ~     (p=0.056 n=5+5)
      deco/disk/randread/direct/2M-min                    5.38ms ± 0%      5.48ms ± 3%     ~     (p=0.698 n=4+5)
      deco/disk/randread/direct/2M-avg                    6.19ms ± 2%      6.13ms ± 1%     ~     (p=0.167 n=5+5)
      deco/disk/randread/pagecache/4K-min                  576ns ± 1%       570ns ± 1%     ~     (p=0.198 n=5+5)
      deco/disk/randread/pagecache/4K-avg                  974ns ± 1%       975ns ± 0%     ~     (p=0.222 n=5+5)
      deco/disk/randread/pagecache/2M-min                  196µs ± 4%       195µs ± 4%     ~     (p=0.841 n=5+5)
      deco/disk/randread/pagecache/2M-avg                  212µs ± 0%       214µs ± 0%   +0.88%  (p=0.008 n=5+5)
      
      name                                            old time/object  new time/object  delta
      deco/fs1/zhash.py                                   17.9µs ±14%      18.0µs ±14%     ~     (p=0.668 n=10+10)
      deco/fs1/zhash.py-P16                                139µs ±18%       140µs ±32%     ~     (p=0.752 n=32+32)
      deco/fs1/zhash.go                                   2.95µs ± 8%      2.97µs ± 9%     ~     (p=0.809 n=10+10)
      deco/fs1/zhash.go+prefetch128                       3.92µs ±25%      3.82µs ±14%     ~     (p=0.755 n=10+10)
      deco/fs1/zhash.go-P16                               13.9µs ±51%      14.1µs ±70%     ~     (p=0.893 n=32+32)
      deco/zeo/zhash.py                                    382µs ± 1%       370µs ± 5%   -3.17%  (p=0.011 n=6+10)
      deco/zeo/zhash.py-P16                               3.10ms ± 9%      3.13ms ± 5%     ~     (p=0.213 n=32+29)
      deco/neo/py/sqlite/zhash.py                          368µs ± 9%       351µs ± 7%     ~     (p=0.165 n=10+10)
      deco/neo/py/sqlite/zhash.py-P16                     3.20ms ± 3%      3.16ms ± 2%     ~     (p=1.000 n=32+32)
      deco/neo/py/sqlite/zhash.go                          177µs ± 7%       153µs ± 4%  -13.24%  (p=0.000 n=10+10)
      deco/neo/py/sqlite/zhash.go+prefetch128              129µs ± 5%       131µs ± 5%     ~     (p=0.362 n=10+10)
      deco/neo/py/sqlite/zhash.go-P16                     2.18ms ± 6%      2.10ms ± 4%   -3.66%  (p=0.001 n=32+32)
      deco/neo/py(!log)/sqlite/zhash.py                    349µs ± 9%       322µs ± 5%   -7.69%  (p=0.015 n=10+10)
      deco/neo/py(!log)/sqlite/zhash.py-P16               3.01ms ± 4%      2.91ms ± 2%   -3.16%  (p=0.001 n=32+32)
      deco/neo/py(!log)/sqlite/zhash.go                    161µs ± 7%       139µs ± 6%  -13.77%  (p=0.000 n=10+10)
      deco/neo/py(!log)/sqlite/zhash.go+prefetch128        113µs ± 1%       115µs ± 5%     ~     (p=0.529 n=10+10)
      deco/neo/py(!log)/sqlite/zhash.go-P16               1.96ms ± 3%      1.92ms ± 2%   -1.94%  (p=0.001 n=32+32)
      deco/neo/py/sql/zhash.py                             417µs ±11%       408µs ± 9%     ~     (p=0.645 n=8+8)
      deco/neo/py/sql/zhash.py-P16                        4.55ms ± 4%      4.52ms ± 2%     ~     (p=1.000 n=32+32)
      deco/neo/py/sql/zhash.go                             227µs ± 9%       198µs ± 3%  -12.91%  (p=0.000 n=10+10)
      deco/neo/py/sql/zhash.go+prefetch128                 184µs ± 5%       181µs ± 3%     ~     (p=0.210 n=10+10)
      deco/neo/py/sql/zhash.go-P16                        3.10ms ± 2%      2.91ms ± 3%   -6.12%  (p=0.000 n=32+32)
      deco/neo/py(!log)/sql/zhash.py                       404µs ±10%       381µs ± 9%     ~     (p=0.161 n=8+8)
      deco/neo/py(!log)/sql/zhash.py-P16                  4.35ms ± 3%      4.20ms ± 1%   -3.30%  (p=0.000 n=32+32)
      deco/neo/py(!log)/sql/zhash.go                       209µs ±10%       181µs ± 2%  -13.37%  (p=0.000 n=10+10)
      deco/neo/py(!log)/sql/zhash.go+prefetch128           161µs ± 5%       160µs ± 4%     ~     (p=0.593 n=10+10)
      deco/neo/py(!log)/sql/zhash.go-P16                  2.76ms ± 3%      2.58ms ± 1%   -6.45%  (p=0.000 n=32+32)
      deco/neo/go/fs1/zhash.py                             222µs ± 2%       224µs ± 2%     ~     (p=0.289 n=10+10)
      deco/neo/go/fs1/zhash.py-P16                        1.98ms ± 8%      1.96ms ± 5%     ~     (p=0.638 n=32+32)
      deco/neo/go/fs1/zhash.go                            50.3µs ±13%      50.4µs ±14%     ~     (p=0.250 n=10+10)
      deco/neo/go/fs1/zhash.go+prefetch128                21.2µs ±24%      20.9µs ±21%     ~     (p=0.590 n=10+10)
      deco/neo/go/fs1/zhash.go-P16                         334µs ±12%       336µs ±15%     ~     (p=0.732 n=32+32)
      deco/neo/go/fs1(!sha1)/zhash.go                     38.5µs ± 3%      38.6µs ± 3%     ~     (p=0.698 n=10+10)
      deco/neo/go/fs1(!sha1)/zhash.go+prefetch128         15.7µs ±12%      15.2µs ±12%     ~     (p=0.170 n=10+10)
      deco/neo/go/fs1(!sha1)/zhash.go-P16                  262µs ±22%       264µs ±21%     ~     (p=0.762 n=30+32)
      deco/neo/go/sqlite/zhash.py                          282µs ±10%       264µs ± 4%     ~     (p=0.239 n=10+10)
      deco/neo/go/sqlite/zhash.py-P16                     2.45ms ± 7%      2.42ms ± 3%     ~     (p=0.973 n=32+31)
      deco/neo/go/sqlite/zhash.go                          111µs ±15%        89µs ± 5%  -19.49%  (p=0.000 n=10+10)
      deco/neo/go/sqlite/zhash.go+prefetch128             44.6µs ±25%      37.7µs ± 7%     ~     (p=0.517 n=10+10)
      deco/neo/go/sqlite/zhash.go-P16                      789µs ± 9%       711µs ±12%   -9.89%  (p=0.000 n=32+32)
      deco/neo/go/sqlite(!sha1)/zhash.go                   109µs ±15%        83µs ± 2%  -23.96%  (p=0.000 n=10+9)
      deco/neo/go/sqlite(!sha1)/zhash.go+prefetch128      41.5µs ±21%      38.2µs ±19%     ~     (p=0.631 n=10+10)
      deco/neo/go/sqlite(!sha1)/zhash.go-P16               735µs ±11%       674µs ±17%   -8.28%  (p=0.002 n=32+31)
      b9827725
    • Kirill Smelkov's avatar
      X noturbo deco timings after speeding up zlib decompression · 0ed7b1fc
      Kirill Smelkov authored
      benchstat -alpha 0.07 20180220-deco-linux4.15.4-noturbo.txt 20180221-deco-noturbo.txt
      
      name                                            old pystone/s    new pystone/s    delta
      deco/pystone                                          219k ± 2%        220k ± 1%     ~     (p=0.310 n=5+5)
      
      name                                            old time/op      new time/op      delta
      deco/sha1/py/1K                                     1.62µs ± 0%      1.83µs ± 1%  +13.15%  (p=0.008 n=5+5)
      deco/sha1/go/1K                                     1.53µs ± 0%      1.53µs ± 0%     ~     (p=0.635 n=5+4)
      deco/sha1/py/4K                                     5.78µs ± 0%      6.68µs ± 1%  +15.56%  (p=0.008 n=5+5)
      deco/sha1/go/4K                                     5.59µs ± 1%      5.59µs ± 0%     ~     (p=1.000 n=5+5)
      deco/sha1/py/2M                                     2.82ms ± 0%      3.19ms ± 0%  +13.05%  (p=0.008 n=5+5)
      deco/sha1/go/2M                                     2.77ms ± 0%      2.78ms ± 0%   +0.20%  (p=0.008 n=5+5)
      deco/disk/randread/direct/4K-min                     104µs ± 2%       104µs ± 0%     ~     (p=0.651 n=5+5)
      deco/disk/randread/direct/4K-avg                     143µs ± 0%       143µs ± 1%     ~     (p=0.317 n=5+5)
      deco/disk/randread/direct/2M-min                    5.30ms ± 4%      5.38ms ± 0%     ~     (p=0.175 n=5+4)
      deco/disk/randread/direct/2M-avg                    6.18ms ± 1%      6.19ms ± 2%     ~     (p=0.651 n=5+5)
      deco/disk/randread/pagecache/4K-min                  584ns ± 0%       576ns ± 1%   -1.37%  (p=0.016 n=5+5)
      deco/disk/randread/pagecache/4K-avg                  981ns ± 0%       974ns ± 1%     ~     (p=0.071 n=5+5)
      deco/disk/randread/pagecache/2M-min                  193µs ± 5%       196µs ± 4%     ~     (p=0.690 n=5+5)
      deco/disk/randread/pagecache/2M-avg                  211µs ± 0%       212µs ± 0%     ~     (p=0.119 n=5+5)
      
      name                                            old time/object  new time/object  delta
      deco/fs1/zhash.py                                   17.9µs ±13%      17.9µs ±14%     ~     (p=0.983 n=8+10)
      deco/fs1/zhash.py-P16                                132µs ±19%       139µs ±18%   +5.39%  (p=0.054 n=32+32)
      deco/fs1/zhash.go                                   3.00µs ± 7%      2.95µs ± 8%     ~     (p=0.307 n=10+10)
      deco/fs1/zhash.go+prefetch128                       3.54µs ±16%      3.92µs ±25%     ~     (p=0.071 n=10+10)
      deco/fs1/zhash.go-P16                               12.7µs ±64%      13.9µs ±51%     ~     (p=0.254 n=31+32)
      deco/zeo/zhash.py                                    369µs ±11%       382µs ± 1%   +3.53%  (p=0.045 n=10+6)
      deco/zeo/zhash.py-P16                               3.01ms ±12%      3.10ms ± 9%   +2.83%  (p=0.024 n=31+32)
      deco/neo/py/sqlite/zhash.py                          378µs ±13%       368µs ± 9%     ~     (p=0.436 n=10+10)
      deco/neo/py/sqlite/zhash.py-P16                     3.21ms ± 3%      3.20ms ± 3%   -0.41%  (p=0.032 n=32+32)
      deco/neo/py/sqlite/zhash.go                          235µs ±24%       177µs ± 7%  -24.82%  (p=0.063 n=10+10)
      deco/neo/py/sqlite/zhash.go+prefetch128              139µs ± 8%       129µs ± 5%   -7.03%  (p=0.003 n=10+10)
      deco/neo/py/sqlite/zhash.go-P16                     2.37ms ± 7%      2.18ms ± 6%   -8.16%  (p=0.001 n=32+32)
      deco/neo/py(!log)/sqlite/zhash.py                    355µs ±14%       349µs ± 9%     ~     (p=0.579 n=10+10)
      deco/neo/py(!log)/sqlite/zhash.py-P16               3.01ms ± 4%      3.01ms ± 4%     ~     (p=0.989 n=32+32)
      deco/neo/py(!log)/sqlite/zhash.go                    213µs ±23%       161µs ± 7%  -24.49%  (p=0.060 n=10+10)
      deco/neo/py(!log)/sqlite/zhash.go+prefetch128        123µs ± 9%       113µs ± 1%   -8.23%  (p=0.000 n=10+10)
      deco/neo/py(!log)/sqlite/zhash.go-P16               2.12ms ± 8%      1.96ms ± 3%   -7.32%  (p=0.001 n=32+32)
      deco/neo/py/sql/zhash.py                             429µs ± 8%       417µs ±11%     ~     (p=0.442 n=8+8)
      deco/neo/py/sql/zhash.py-P16                        4.57ms ± 3%      4.55ms ± 4%     ~     (p=0.257 n=32+32)
      deco/neo/py/sql/zhash.go                             281µs ±19%       227µs ± 9%  -18.94%  (p=0.063 n=10+10)
      deco/neo/py/sql/zhash.go+prefetch128                 201µs ± 7%       184µs ± 5%   -8.40%  (p=0.002 n=10+10)
      deco/neo/py/sql/zhash.go-P16                        3.34ms ± 5%      3.10ms ± 2%   -7.36%  (p=0.000 n=32+32)
      deco/neo/py(!log)/sql/zhash.py                       404µs ±14%       404µs ±10%     ~     (p=0.959 n=8+8)
      deco/neo/py(!log)/sql/zhash.py-P16                  4.34ms ± 2%      4.35ms ± 3%     ~     (p=0.763 n=32+32)
      deco/neo/py(!log)/sql/zhash.go                       261µs ±19%       209µs ±10%  -20.01%  (p=0.061 n=10+10)
      deco/neo/py(!log)/sql/zhash.go+prefetch128           180µs ± 7%       161µs ± 5%  -10.49%  (p=0.000 n=10+10)
      deco/neo/py(!log)/sql/zhash.go-P16                  3.00ms ± 6%      2.76ms ± 3%   -7.93%  (p=0.000 n=32+32)
      deco/neo/go/fs1/zhash.py                             220µs ± 2%       222µs ± 2%     ~     (p=0.219 n=9+10)
      deco/neo/go/fs1/zhash.py-P16                        2.00ms ± 7%      1.98ms ± 8%     ~     (p=0.112 n=32+32)
      deco/neo/go/fs1/zhash.go                            50.3µs ±13%      50.3µs ±13%     ~     (p=0.747 n=10+10)
      deco/neo/go/fs1/zhash.go+prefetch128                20.6µs ±23%      21.2µs ±24%     ~     (p=0.423 n=10+10)
      deco/neo/go/fs1/zhash.go-P16                         325µs ±12%       334µs ±12%     ~     (p=0.120 n=30+32)
      deco/neo/go/fs1(!sha1)/zhash.go                     39.2µs ± 3%      38.5µs ± 3%     ~     (p=0.137 n=10+10)
      deco/neo/go/fs1(!sha1)/zhash.go+prefetch128         15.3µs ±16%      15.7µs ±12%     ~     (p=0.196 n=10+10)
      deco/neo/go/fs1(!sha1)/zhash.go-P16                  270µs ±31%       262µs ±22%     ~     (p=0.245 n=32+30)
      deco/neo/go/sqlite/zhash.py                          292µs ±11%       282µs ±10%     ~     (p=0.165 n=10+10)
      deco/neo/go/sqlite/zhash.py-P16                     2.46ms ± 7%      2.45ms ± 7%     ~     (p=0.546 n=32+32)
      deco/neo/go/sqlite/zhash.go                          159µs ±28%       111µs ±15%  -30.02%  (p=0.060 n=10+10)
      deco/neo/go/sqlite/zhash.go+prefetch128             80.4µs ±34%      44.6µs ±25%  -44.51%  (p=0.001 n=10+10)
      deco/neo/go/sqlite/zhash.go-P16                     1.13ms ±41%      0.79ms ± 9%  -30.00%  (p=0.000 n=32+32)
      deco/neo/go/sqlite(!sha1)/zhash.go                   155µs ±28%       109µs ±15%  -29.98%  (p=0.061 n=10+10)
      deco/neo/go/sqlite(!sha1)/zhash.go+prefetch128      78.9µs ±36%      41.5µs ±21%  -47.34%  (p=0.000 n=10+10)
      deco/neo/go/sqlite(!sha1)/zhash.go-P16              1.14ms ±25%      0.73ms ±11%  -35.37%  (p=0.000 n=32+32)
      0ed7b1fc
    • Kirill Smelkov's avatar
      bf213313
    • Kirill Smelkov's avatar
      X xzlib: Switch to github.com/DataDog/czlib to zlib Decompression · 57524491
      Kirill Smelkov authored
      name                        old time/op    new time/op    delta
      deco/unzlib/py/null-1K        2.12µs ± 1%    2.11µs ± 2%     ~     (p=0.841 n=5+5)
      deco/unzlib/go/null-1K        1.89µs ± 1%    2.27µs ± 1%  +20.03%  (p=0.008 n=5+5)
      deco/unzlib/py/null-4K        13.5µs ± 4%    13.3µs ± 0%     ~     (p=0.310 n=5+5)
      deco/unzlib/go/null-4K        8.54µs ± 0%    8.91µs ± 0%   +4.43%  (p=0.008 n=5+5)
      deco/unzlib/py/null-2M        5.20ms ±10%    5.31ms ± 1%     ~     (p=0.548 n=5+5)
      deco/unzlib/go/null-2M        2.58ms ± 1%    3.87ms ± 0%  +50.13%  (p=0.008 n=5+5)
      deco/unzlib/py/wczdata-avg    24.1µs ± 1%    23.9µs ± 0%     ~     (p=0.114 n=4+4)
      deco/unzlib/go/wczdata-avg    68.0µs ± 1%    20.9µs ± 0%  -69.29%  (p=0.008 n=5+5)
      deco/unzlib/py/wczdata-max    23.5µs ± 1%    23.5µs ± 0%     ~     (p=0.556 n=4+5)
      deco/unzlib/go/wczdata-max    67.8µs ± 0%    20.7µs ± 1%  -69.45%  (p=0.008 n=5+5)
      deco/unzlib/py/prod1-avg      4.47µs ± 2%    4.44µs ± 1%     ~     (p=0.341 n=5+5)
      deco/unzlib/go/prod1-avg      11.0µs ± 0%     4.1µs ± 1%  -62.39%  (p=0.016 n=5+4)
      deco/unzlib/py/prod1-max       326µs ± 0%     325µs ± 0%     ~     (p=0.095 n=5+5)
      deco/unzlib/go/prod1-max       542µs ± 0%     262µs ± 0%  -51.71%  (p=0.008 n=5+5)
      
      There is also unsafe interface with czlib.UnsafeDecompress & friends which I
      had not tried because even using safe interface brings ~ 3x speedup.
      57524491
    • Kirill Smelkov's avatar
      X xzlib: Reuse zlib decoders · 9acb87a8
      Kirill Smelkov authored
      name                        old time/op    new time/op    delta
      deco/unzlib/py/null-1K        2.11µs ± 1%    2.12µs ± 1%     ~     (p=0.690 n=5+5)
      deco/unzlib/go/null-1K        5.87µs ± 1%    1.89µs ± 1%  -67.77%  (p=0.008 n=5+5)
      deco/unzlib/py/null-4K        13.3µs ± 1%    13.5µs ± 4%     ~     (p=0.690 n=5+5)
      deco/unzlib/go/null-4K        12.6µs ± 0%     8.5µs ± 0%  -32.50%  (p=0.008 n=5+5)
      deco/unzlib/py/null-2M        5.17ms ±11%    5.20ms ±10%     ~     (p=1.000 n=5+5)
      deco/unzlib/go/null-2M        2.61ms ± 1%    2.58ms ± 1%   -1.32%  (p=0.016 n=5+5)
      deco/unzlib/py/wczdata-avg    20.9µs ±14%    24.1µs ± 1%  +15.05%  (p=0.016 n=5+4)
      deco/unzlib/go/wczdata-avg    73.0µs ± 1%    68.0µs ± 1%   -6.94%  (p=0.008 n=5+5)
      deco/unzlib/py/wczdata-max    23.6µs ± 0%    23.5µs ± 1%     ~     (p=0.905 n=5+4)
      deco/unzlib/go/wczdata-max    72.7µs ± 0%    67.8µs ± 0%   -6.79%  (p=0.008 n=5+5)
      deco/unzlib/py/prod1-avg      4.53µs ± 3%    4.47µs ± 2%     ~     (p=0.310 n=5+5)
      deco/unzlib/go/prod1-avg      15.5µs ± 0%    11.0µs ± 0%  -29.11%  (p=0.008 n=5+5)
      deco/unzlib/py/prod1-max       327µs ± 1%     326µs ± 0%     ~     (p=1.000 n=5+5)
      deco/unzlib/go/prod1-max       545µs ± 0%     542µs ± 0%   -0.68%  (p=0.008 n=5+5)
      
      still on wczdata and prod1 much slower compared to py/c zlib.
      9acb87a8
    • Kirill Smelkov's avatar
      X unzlib benchmarks · 924831e7
      Kirill Smelkov authored
      924831e7