snappy-go: Improve encode performance a bit.
snappy-go: Improve encode performance a bit.

Incorporates additional changes suggested by Dmitry Chestnykh,
which proved to gain even some more speed up.

$ benchcmp old.txt new.txt
benchmark                  old ns/op    new ns/op    delta
BenchmarkWordsDecode1e3         6795         6823   +0.41%
BenchmarkWordsDecode1e4        67244        67337   +0.14%
BenchmarkWordsDecode1e5       692152       693272   +0.16%
BenchmarkWordsDecode1e6      6014484      6022518   +0.13%
BenchmarkWordsEncode1e3        24069        22256   -7.53%
BenchmarkWordsEncode1e4       155522       130625  -16.01%
BenchmarkWordsEncode1e5      1451341      1342459   -7.50%
BenchmarkWordsEncode1e6     11588325     10801803   -6.79%
Benchmark_UFlat0              324272       324723   +0.14%
Benchmark_UFlat1             3054906      3061657   +0.22%
Benchmark_UFlat2               34889        34955   +0.19%
Benchmark_UFlat3              106121       106247   +0.12%
Benchmark_UFlat4             1301508      1303304   +0.14%
Benchmark_UFlat5              117178       117506   +0.28%
Benchmark_UFlat6               52977        53008   +0.06%
Benchmark_UFlat7               17865        17895   +0.17%
Benchmark_UFlat8             4049196      4066785   +0.43%
Benchmark_UFlat9              935762       938304   +0.27%
Benchmark_UFlat10             808857       811668   +0.35%
Benchmark_UFlat11            2518497      2525181   +0.27%
Benchmark_UFlat12            3269812      3279646   +0.30%
Benchmark_UFlat13            1432980      1434405   +0.10%
Benchmark_UFlat14             195012       195467   +0.23%
Benchmark_UFlat15              22993        23028   +0.15%
Benchmark_UFlat16             327945       328377   +0.13%
Benchmark_UFlat17             827246       828168   +0.11%
Benchmark_ZFlat0              586969       548872   -6.49%
Benchmark_ZFlat1             8081042      7590963   -6.06%
Benchmark_ZFlat2             2229381      1895227  -14.99%
Benchmark_ZFlat3             1409796      1214367  -13.86%
Benchmark_ZFlat4             2254589      2153293   -4.49%
Benchmark_ZFlat5              283640       254657  -10.22%
Benchmark_ZFlat6              128752       106041  -17.64%
Benchmark_ZFlat7               50282        44514  -11.47%
Benchmark_ZFlat8             7295276      6813961   -6.60%
Benchmark_ZFlat9             1947643      1821234   -6.49%
Benchmark_ZFlat10            1723946      1607431   -6.76%
Benchmark_ZFlat11            5202240      4889793   -6.01%
Benchmark_ZFlat12            6877479      6406872   -6.84%
Benchmark_ZFlat13            2504360      2380325   -4.95%
Benchmark_ZFlat14             449529       411485   -8.46%
Benchmark_ZFlat15              67703        57238  -15.46%
Benchmark_ZFlat16             599605       560547   -6.51%
Benchmark_ZFlat17            1512113      1364405   -9.77%

benchmark                   old MB/s     new MB/s  speedup
BenchmarkWordsDecode1e3       147.16       146.55    1.00x
BenchmarkWordsDecode1e4       148.71       148.51    1.00x
BenchmarkWordsDecode1e5       144.48       144.24    1.00x
BenchmarkWordsDecode1e6       166.27       166.04    1.00x
BenchmarkWordsEncode1e3        41.55        44.93    1.08x
BenchmarkWordsEncode1e4        64.30        76.55    1.19x
BenchmarkWordsEncode1e5        68.90        74.49    1.08x
BenchmarkWordsEncode1e6        86.29        92.58    1.07x
Benchmark_UFlat0              315.78       315.34    1.00x
Benchmark_UFlat1              229.82       229.32    1.00x
Benchmark_UFlat2             3638.81      3632.04    1.00x
Benchmark_UFlat3              888.89       887.83    1.00x
Benchmark_UFlat4              314.71       314.28    1.00x
Benchmark_UFlat5              209.96       209.38    1.00x
Benchmark_UFlat6              210.47       210.34    1.00x
Benchmark_UFlat7              208.28       207.93    1.00x
Benchmark_UFlat8              254.31       253.21    1.00x
Benchmark_UFlat9              162.53       162.09    1.00x
Benchmark_UFlat10             154.76       154.22    1.00x
Benchmark_UFlat11             169.45       169.00    1.00x
Benchmark_UFlat12             147.37       146.92    1.00x
Benchmark_UFlat13             358.15       357.79    1.00x
Benchmark_UFlat14             196.09       195.63    1.00x
Benchmark_UFlat15             183.84       183.56    1.00x
Benchmark_UFlat16             361.61       361.13    1.00x
Benchmark_UFlat17             222.81       222.56    1.00x
Benchmark_ZFlat0              174.46       186.56    1.07x
Benchmark_ZFlat1               86.88        92.49    1.06x
Benchmark_ZFlat2               56.95        66.99    1.18x
Benchmark_ZFlat3               66.91        77.68    1.16x
Benchmark_ZFlat4              181.67       190.22    1.05x
Benchmark_ZFlat5               86.74        96.61    1.11x
Benchmark_ZFlat6               86.60       105.15    1.21x
Benchmark_ZFlat7               74.00        83.59    1.13x
Benchmark_ZFlat8              141.15       151.12    1.07x
Benchmark_ZFlat9               78.09        83.51    1.07x
Benchmark_ZFlat10              72.61        77.88    1.07x
Benchmark_ZFlat11              82.03        87.27    1.06x
Benchmark_ZFlat12              70.06        75.21    1.07x
Benchmark_ZFlat13             204.93       215.61    1.05x
Benchmark_ZFlat14              85.07        92.93    1.09x
Benchmark_ZFlat15              62.43        73.85    1.18x
Benchmark_ZFlat16             197.78       211.56    1.07x
Benchmark_ZFlat17             121.90       135.09    1.11x
$

R=nigeltao, dchest
CC=golang-dev
https://codereview.appspot.com/7346051

Committer: Nigel Tao <58ae08b3356928ff9c67562b4719487d54fe8348@golang.org>

andrew-d/snappy-go,shuxieliu/snappy-go,apeshave/snappy-go,dereknex/snappy-go,alexaandru/snappy-go,citysir/snappy-go,bmatsuo/snappy,monkeybutter/snappy,extrame/snappy-go,bububa/snappy-go,anunui/snappy-go,eryx/snappy-go,hankya/snappy-go,mengjinglei/snappy-go,lvzhihao/snappy-go,zvictorino/snappy-go,btcsuite/snappy-go,syndtr/gosnappy,winlinvip/snappy,xman1101/snappy-go,alehano/snappy-go,leywar/snappy-go,dmbreaker/snappy-go,chenny7/snappy-go,tsenart/snappy-go,lanfeust21/snappy-go,tsanyen/snappy-go,golang/snappy,golang/snappy,matveyco/snappy-go,sbinet/go-snappy,hqjia/snappy-go,MuruganMuthu/snappy-go,pzduniak/snappy-go,boljen/snappy-go,FactomProject/snappy-go,lzbgt/snappy-go,FactomProject/snappy-go,shanemhansen/snappy-go,mingzhi/snappy-go,jmatrix/snappy-go,ahirmayur/snappy-go,jaredye/snappy-go,MarkRoddy/snappy,weilikd/snappy-go