• Robert Griesemer's avatar
    math/big: faster (add|sub)V(V|W) routines · 35422bc1
    Robert Griesemer authored
    Benchmarks run on 3.06GHz Intel Core 2 Duo,
    4GB 800MHz DDR2 SDRAM ("iMac").
    
    benchmark             old ns/op    new ns/op    delta
    BenchmarkAddVV_1              6            6   +2.75%
    BenchmarkAddVV_2              9            7  -19.71%
    BenchmarkAddVV_3              9            9   +2.25%
    BenchmarkAddVV_4             10            8  -20.46%
    BenchmarkAddVV_5             12           10  -19.53%
    BenchmarkAddVV_1e1           23           15  -32.48%
    BenchmarkAddVV_1e2          213          107  -49.77%
    BenchmarkAddVV_1e3         2088          993  -52.44%
    BenchmarkAddVV_1e4        20874        12027  -42.38%
    BenchmarkAddVV_1e5       209858       121480  -42.11%
    BenchmarkAddVW_1              5            5   +0.90%
    BenchmarkAddVW_2             11           11   -3.51%
    BenchmarkAddVW_3              7            7   -0.27%
    BenchmarkAddVW_4              8            7   -6.32%
    BenchmarkAddVW_5              9            8  -10.89%
    BenchmarkAddVW_1e1           17           12  -26.01%
    BenchmarkAddVW_1e2          155           89  -42.32%
    BenchmarkAddVW_1e3         1479          873  -40.97%
    BenchmarkAddVW_1e4        13838         8764  -36.67%
    BenchmarkAddVW_1e5       147353        89560  -39.22%
    
    benchmark              old MB/s     new MB/s  speedup
    BenchmarkAddVV_1        9765.57      9508.55    0.97x
    BenchmarkAddVV_2       13077.63     16284.97    1.25x
    BenchmarkAddVV_3       20599.58     20156.67    0.98x
    BenchmarkAddVV_4       23591.58     29516.02    1.25x
    BenchmarkAddVV_5       24920.95     31194.10    1.25x
    BenchmarkAddVV_1e1     27393.76     40621.71    1.48x
    BenchmarkAddVV_1e2     29911.96     59592.99    1.99x
    BenchmarkAddVV_1e3     30650.73     64429.84    2.10x
    BenchmarkAddVV_1e4     30660.09     53213.08    1.74x
    BenchmarkAddVV_1e5     30496.74     52683.46    1.73x
    BenchmarkAddVW_1       11503.39     11405.98    0.99x
    BenchmarkAddVW_2       11203.56     11586.92    1.03x
    BenchmarkAddVW_3       26173.45     26224.75    1.00x
    BenchmarkAddVW_4       30560.30     32621.94    1.07x
    BenchmarkAddVW_5       33183.81     37269.94    1.12x
    BenchmarkAddVW_1e1     36991.75     50098.53    1.35x
    BenchmarkAddVW_1e2     41087.14     71549.93    1.74x
    BenchmarkAddVW_1e3     43266.42     73279.83    1.69x
    BenchmarkAddVW_1e4     46246.74     73021.97    1.58x
    BenchmarkAddVW_1e5     43433.00     71459.96    1.65x
    
    Benchmarks run on 2.8GHz Quad-Code Intel Xeon,
    4GB 800MHz DDR2 FB-DIMM ("PowerMac").
    
    benchmark             old ns/op    new ns/op    delta
    BenchmarkAddVV_1              7            7   +2.51%
    BenchmarkAddVV_2              8            8   +3.70%
    BenchmarkAddVV_3             10           10   +4.00%
    BenchmarkAddVV_4             11            9  -19.49%
    BenchmarkAddVV_5             14           11  -18.44%
    BenchmarkAddVV_1e1           23           17  -27.00%
    BenchmarkAddVV_1e2          234          117  -50.00%
    BenchmarkAddVV_1e3         2284         1095  -52.06%
    BenchmarkAddVV_1e4        22906        13149  -42.60%
    BenchmarkAddVV_1e5       229860       135133  -41.21%
    BenchmarkAddVW_1              6            6   +1.15%
    BenchmarkAddVW_2              7            7   +1.37%
    BenchmarkAddVW_3              7            8   +1.00%
    BenchmarkAddVW_4              9            8   -6.93%
    BenchmarkAddVW_5             10            9  -13.21%
    BenchmarkAddVW_1e1           18           14  -24.32%
    BenchmarkAddVW_1e2          170           97  -42.41%
    BenchmarkAddVW_1e3         1619          953  -41.14%
    BenchmarkAddVW_1e4        15142         9776  -35.44%
    BenchmarkAddVW_1e5       160835       102396  -36.33%
    
    benchmark              old MB/s     new MB/s  speedup
    BenchmarkAddVV_1        8928.95      8702.84    0.97x
    BenchmarkAddVV_2       15298.84     14739.60    0.96x
    BenchmarkAddVV_3       19116.52     18375.37    0.96x
    BenchmarkAddVV_4       21644.30     26935.44    1.24x
    BenchmarkAddVV_5       22771.64     27754.04    1.22x
    BenchmarkAddVV_1e1     27017.62     37050.89    1.37x
    BenchmarkAddVV_1e2     27326.09     54289.15    1.99x
    BenchmarkAddVV_1e3     28016.84     58428.83    2.09x
    BenchmarkAddVV_1e4     27939.38     48670.55    1.74x
    BenchmarkAddVV_1e5     27843.00     47360.54    1.70x
    BenchmarkAddVW_1       10510.97     10397.27    0.99x
    BenchmarkAddVW_2       17499.71     17279.03    0.99x
    BenchmarkAddVW_3       24093.93     23858.39    0.99x
    BenchmarkAddVW_4       27733.08     29799.42    1.07x
    BenchmarkAddVW_5       30267.17     34781.83    1.15x
    BenchmarkAddVW_1e1     34566.78     45629.88    1.32x
    BenchmarkAddVW_1e2     37521.89     65341.93    1.74x
    BenchmarkAddVW_1e3     39513.18     67153.67    1.70x
    BenchmarkAddVW_1e4     42263.80     65464.60    1.55x
    BenchmarkAddVW_1e5     39792.21     62501.88    1.57x
    
    R=iant, remyoudompheng, nightlyone, minux.ma
    CC=golang-dev
    https://golang.org/cl/6482062
    35422bc1
arith_amd64.s 7.19 KB