Descriptionencoding/binary: faster littleEndian on i386/amd64 and varint
Make use of unsafe.Pointer casting on i386/amd for little endian
read/write.
(change of BigEndian speed is benchmark noise)
Unroll a bit PutUvarint.
benchmark old ns/op new ns/op delta
BenchmarkReadSlice1000Int32sBE 10640 10679 +0.37%
BenchmarkReadSlice1000Int32sLE 10515 9096 -13.50%
BenchmarkReadStructBE 2068 2163 +4.59%
BenchmarkReadStructLE 2073 2070 -0.14%
BenchmarkReadIntsBE 808 797 -1.36%
BenchmarkReadIntsLE 807 780 -3.35%
BenchmarkWriteIntsBE 1445 1474 +2.01%
BenchmarkWriteIntsLE 1448 1422 -1.80%
BenchmarkWriteSlice1000Int32sBE 10661 10660 -0.01%
BenchmarkWriteSlice1000Int32sLE 10549 9242 -12.39%
BenchmarkPutUvarint32 31 29 -6.62%
BenchmarkPutUvarint64 89 86 -3.36%
benchmark old MB/s new MB/s speedup
BenchmarkReadSlice1000Int32sBE 375.92 374.54 1.00x
BenchmarkReadSlice1000Int32sLE 380.40 439.73 1.16x
BenchmarkReadStructBE 33.83 32.35 0.96x
BenchmarkReadStructLE 33.77 33.82 1.00x
BenchmarkReadIntsBE 37.13 37.63 1.01x
BenchmarkReadIntsLE 37.14 38.43 1.03x
BenchmarkWriteIntsBE 20.76 20.34 0.98x
BenchmarkWriteIntsLE 20.71 21.09 1.02x
BenchmarkWriteSlice1000Int32sBE 375.16 375.23 1.00x
BenchmarkWriteSlice1000Int32sLE 379.16 432.80 1.14x
BenchmarkPutUvarint32 126.30 135.05 1.07x
BenchmarkPutUvarint64 89.51 92.65 1.04x
Patch Set 1 #Patch Set 2 : diff -r d2cb80eac1ac https://code.google.com/p/go #Patch Set 3 : diff -r d2cb80eac1ac https://code.google.com/p/go #
MessagesTotal messages: 4
|