mirror of https://github.com/google/snappy.git
Optimize decompression by about 0.82%.
Assembly difference: https://godbolt.org/z/cvlH9b name old time/op new time/op delta BM_UFlat/0 [html ] 42.3µs ± 0% 42.5µs ± 0% +0.57% (p=0.008 n=5+5) BM_UFlat/1 [urls ] 590µs ± 0% 575µs ± 0% -2.60% (p=0.008 n=5+5) BM_UFlat/2 [jpg ] 7.16µs ± 1% 7.15µs ± 1% ~ (p=0.841 n=5+5) BM_UFlat/3 [jpg_200 ] 131ns ± 0% 129ns ± 0% -1.41% (p=0.008 n=5+5) BM_UFlat/4 [pdf ] 8.21µs ± 0% 8.22µs ± 1% ~ (p=0.690 n=5+5) BM_UFlat/5 [html4 ] 222µs ± 0% 223µs ± 0% ~ (p=0.841 n=5+5) BM_UFlat/6 [txt1 ] 193µs ± 0% 192µs ± 0% ~ (p=0.095 n=5+5) BM_UFlat/7 [txt2 ] 171µs ± 0% 169µs ± 0% -0.83% (p=0.008 n=5+5) BM_UFlat/8 [txt3 ] 511µs ± 0% 510µs ± 0% ~ (p=0.841 n=5+5) BM_UFlat/9 [txt4 ] 717µs ± 0% 707µs ± 0% -1.42% (p=0.008 n=5+5) BM_UFlat/10 [pb ] 38.8µs ± 0% 39.3µs ± 0% +1.26% (p=0.008 n=5+5) BM_UFlat/11 [gaviota ] 190µs ± 0% 189µs ± 0% -0.43% (p=0.032 n=5+5) BM_UFlat/12 [cp ] 14.3µs ± 0% 14.2µs ± 0% -0.92% (p=0.008 n=5+5) BM_UFlat/13 [c ] 7.35µs ± 1% 7.30µs ± 0% -0.66% (p=0.032 n=5+5) BM_UFlat/14 [lsp ] 2.30µs ± 1% 2.28µs ± 0% ~ (p=0.056 n=5+5) BM_UFlat/15 [xls ] 983µs ± 0% 904µs ± 0% -7.99% (p=0.008 n=5+5) BM_UFlat/16 [xls_200 ] 213ns ± 0% 213ns ± 1% ~ (p=0.690 n=5+5) BM_UFlat/17 [bin ] 278µs ± 0% 274µs ± 0% -1.56% (p=0.008 n=5+5) BM_UFlat/18 [bin_200 ] 101ns ± 0% 101ns ± 1% ~ (p=1.000 n=5+5) BM_UFlat/19 [sum ] 29.4µs ± 1% 28.0µs ± 1% -4.98% (p=0.008 n=5+5) BM_UFlat/20 [man ] 2.97µs ± 0% 2.97µs ± 0% ~ (p=0.421 n=5+5) BM_UValidate/0 [html ] 33.6µs ± 0% 33.6µs ± 0% ~ (p=0.548 n=5+5) BM_UValidate/1 [urls ] 443µs ± 0% 441µs ± 0% -0.43% (p=0.016 n=4+5) BM_UValidate/2 [jpg ] 146ns ± 0% 144ns ± 0% -1.63% (p=0.008 n=5+5) BM_UValidate/3 [jpg_200 ] 98.6ns ± 0% 95.3ns ± 0% -3.32% (p=0.008 n=5+5) BM_UValidate/4 [pdf ] 2.89µs ± 1% 2.85µs ± 0% -1.22% (p=0.008 n=5+5) BM_UIOVec/0 [html ] 122µs ± 0% 122µs ± 0% ~ (p=1.000 n=5+5) BM_UIOVec/1 [urls ] 1.08ms ± 0% 1.08ms ± 0% ~ (p=0.095 n=5+5) BM_UIOVec/2 [jpg ] 7.51µs ± 4% 7.69µs ± 6% ~ (p=0.421 n=5+5) BM_UIOVec/3 [jpg_200 ] 327ns ± 0% 327ns ± 1% ~ (p=0.730 n=4+5) BM_UIOVec/4 [pdf ] 12.0µs ± 1% 12.0µs ± 0% ~ (p=0.286 n=5+4) BM_UFlatSink/0 [html ] 42.3µs ± 0% 42.5µs ± 0% +0.46% (p=0.008 n=5+5) BM_UFlatSink/1 [urls ] 589µs ± 0% 575µs ± 0% -2.36% (p=0.008 n=5+5) BM_UFlatSink/2 [jpg ] 7.40µs ± 8% 7.74µs ± 9% ~ (p=0.310 n=5+5) BM_UFlatSink/3 [jpg_200 ] 134ns ± 0% 131ns ± 0% -1.78% (p=0.008 n=5+5) BM_UFlatSink/4 [pdf ] 8.28µs ± 3% 8.35µs ± 6% ~ (p=0.548 n=5+5) BM_UFlatSink/5 [html4 ] 222µs ± 0% 222µs ± 0% ~ (p=0.690 n=5+5) BM_UFlatSink/6 [txt1 ] 193µs ± 0% 192µs ± 0% ~ (p=0.222 n=5+5) BM_UFlatSink/7 [txt2 ] 171µs ± 0% 169µs ± 0% -0.91% (p=0.008 n=5+5) BM_UFlatSink/8 [txt3 ] 512µs ± 0% 510µs ± 0% -0.28% (p=0.032 n=5+5) BM_UFlatSink/9 [txt4 ] 717µs ± 0% 707µs ± 0% -1.32% (p=0.008 n=5+5) BM_UFlatSink/10 [pb ] 38.7µs ± 0% 39.2µs ± 0% +1.29% (p=0.008 n=5+5) BM_UFlatSink/11 [gaviota ] 190µs ± 0% 189µs ± 0% -0.47% (p=0.008 n=5+5) BM_UFlatSink/12 [cp ] 14.3µs ± 0% 14.2µs ± 0% -0.65% (p=0.008 n=5+5) BM_UFlatSink/13 [c ] 7.36µs ± 1% 7.29µs ± 0% -0.92% (p=0.008 n=5+5) BM_UFlatSink/14 [lsp ] 2.30µs ± 1% 2.29µs ± 0% ~ (p=0.841 n=5+5) BM_UFlatSink/15 [xls ] 980µs ± 0% 903µs ± 0% -7.92% (p=0.008 n=5+5) BM_UFlatSink/16 [xls_200 ] 217ns ± 0% 215ns ± 0% -0.94% (p=0.008 n=5+5) BM_UFlatSink/17 [bin ] 278µs ± 0% 273µs ± 0% -1.56% (p=0.008 n=5+5) BM_UFlatSink/18 [bin_200 ] 107ns ± 5% 104ns ± 0% ~ (p=0.056 n=5+5) BM_UFlatSink/19 [sum ] 29.5µs ± 0% 27.9µs ± 0% -5.32% (p=0.008 n=5+5) BM_UFlatSink/20 [man ] 3.01µs ± 0% 3.00µs ± 1% ~ (p=0.310 n=5+5) BM_ZFlat/0 [html (22.31 %) ] 127µs ± 0% 126µs ± 0% -0.46% (p=0.008 n=5+5) BM_ZFlat/1 [urls (47.78 %) ] 1.67ms ± 0% 1.67ms ± 0% ~ (p=0.548 n=5+5) BM_ZFlat/2 [jpg (99.95 %) ] 11.5µs ± 3% 11.6µs ± 6% ~ (p=0.841 n=5+5) BM_ZFlat/3 [jpg_200 (73.00 %)] 350ns ± 2% 347ns ± 0% ~ (p=0.905 n=5+4) BM_ZFlat/4 [pdf (83.30 %) ] 14.6µs ± 4% 14.6µs ± 1% ~ (p=0.421 n=5+5) BM_ZFlat/5 [html4 (22.52 %) ] 553µs ± 0% 553µs ± 0% ~ (p=0.690 n=5+5) BM_ZFlat/6 [txt1 (57.88 %) ] 540µs ± 0% 540µs ± 0% ~ (p=1.000 n=5+5) BM_ZFlat/7 [txt2 (61.91 %) ] 481µs ± 0% 479µs ± 0% -0.54% (p=0.008 n=5+5) BM_ZFlat/8 [txt3 (54.99 %) ] 1.44ms ± 0% 1.44ms ± 0% ~ (p=0.222 n=5+5) BM_ZFlat/9 [txt4 (66.26 %) ] 1.97ms ± 0% 1.97ms ± 0% ~ (p=0.222 n=5+5) BM_ZFlat/10 [pb (19.68 %) ] 110µs ± 0% 110µs ± 0% ~ (p=0.841 n=5+5) BM_ZFlat/11 [gaviota (37.72 %)] 411µs ± 0% 410µs ± 0% ~ (p=0.222 n=5+5) BM_ZFlat/12 [cp (48.12 %) ] 46.1µs ± 1% 45.8µs ± 0% ~ (p=0.056 n=5+5) BM_ZFlat/13 [c (42.47 %) ] 17.6µs ± 0% 17.6µs ± 1% ~ (p=0.310 n=5+5) BM_ZFlat/14 [lsp (48.37 %) ] 5.46µs ± 1% 5.49µs ± 0% ~ (p=0.222 n=5+5) BM_ZFlat/15 [xls (41.23 %) ] 1.62ms ± 0% 1.61ms ± 0% ~ (p=0.190 n=4+5) BM_ZFlat/16 [xls_200 (78.00 %)] 392ns ± 2% 385ns ± 1% ~ (p=0.200 n=4+4) BM_ZFlat/17 [bin (18.11 %) ] 509µs ± 0% 508µs ± 0% -0.26% (p=0.008 n=5+5) BM_ZFlat/18 [bin_200 (7.50 %) ] 90.2ns ±15% 80.8ns ± 0% -10.39% (p=0.016 n=5+4) BM_ZFlat/19 [sum (48.96 %) ] 81.1µs ± 0% 79.1µs ± 1% -2.37% (p=0.008 n=5+5) BM_ZFlat/20 [man (59.21 %) ] 7.61µs ± 1% 7.57µs ± 1% ~ (p=0.421 n=5+5) name old allocs/op new allocs/op delta BM_UFlat/0 [html ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/1 [urls ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/2 [jpg ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/3 [jpg_200 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/4 [pdf ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/5 [html4 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/6 [txt1 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/7 [txt2 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/8 [txt3 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/9 [txt4 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/10 [pb ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/11 [gaviota ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/12 [cp ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/13 [c ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/14 [lsp ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/15 [xls ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/16 [xls_200 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/17 [bin ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/18 [bin_200 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/19 [sum ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlat/20 [man ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UValidate/0 [html ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UValidate/1 [urls ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UValidate/2 [jpg ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UValidate/3 [jpg_200 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UValidate/4 [pdf ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UIOVec/0 [html ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UIOVec/1 [urls ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UIOVec/2 [jpg ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UIOVec/3 [jpg_200 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UIOVec/4 [pdf ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/0 [html ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/1 [urls ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/2 [jpg ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/3 [jpg_200 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/4 [pdf ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/5 [html4 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/6 [txt1 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/7 [txt2 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/8 [txt3 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/9 [txt4 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/10 [pb ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/11 [gaviota ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/12 [cp ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/13 [c ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/14 [lsp ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/15 [xls ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/16 [xls_200 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/17 [bin ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/18 [bin_200 ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/19 [sum ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_UFlatSink/20 [man ] 0.00 ±NaN% 0.00 ±NaN% ~ (all samples are equal) BM_ZFlat/0 [html (22.31 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/1 [urls (47.78 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/2 [jpg (99.95 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/3 [jpg_200 (73.00 %)] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/4 [pdf (83.30 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/5 [html4 (22.52 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/6 [txt1 (57.88 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/7 [txt2 (61.91 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/8 [txt3 (54.99 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/9 [txt4 (66.26 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/10 [pb (19.68 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/11 [gaviota (37.72 %)] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/12 [cp (48.12 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/13 [c (42.47 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/14 [lsp (48.37 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/15 [xls (41.23 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/16 [xls_200 (78.00 %)] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/17 [bin (18.11 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/18 [bin_200 (7.50 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/19 [sum (48.96 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) BM_ZFlat/20 [man (59.21 %) ] 1.00 ± 0% 1.00 ± 0% ~ (all samples are equal) name old peak-mem(Bytes)/op new peak-mem(Bytes)/op delta BM_UFlat/0 [html ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/1 [urls ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/2 [jpg ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/3 [jpg_200 ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/4 [pdf ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/5 [html4 ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/6 [txt1 ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/7 [txt2 ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/8 [txt3 ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/9 [txt4 ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/10 [pb ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/11 [gaviota ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/12 [cp ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/13 [c ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/14 [lsp ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/15 [xls ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/16 [xls_200 ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/17 [bin ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/18 [bin_200 ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/19 [sum ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlat/20 [man ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UValidate/0 [html ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UValidate/1 [urls ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UValidate/2 [jpg ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UValidate/3 [jpg_200 ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UValidate/4 [pdf ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UIOVec/0 [html ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UIOVec/1 [urls ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UIOVec/2 [jpg ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UIOVec/3 [jpg_200 ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UIOVec/4 [pdf ] 4.00 ± 0% 4.00 ± 0% ~ (all samples are equal) BM_UFlatSink/0 [html ] 102k ± 0% 102k ± 0% ~ (all samples are equal) BM_UFlatSink/1 [urls ] 702k ± 0% 702k ± 0% ~ (all samples are equal) BM_UFlatSink/2 [jpg ] 123k ± 0% 123k ± 0% ~ (all samples are equal) BM_UFlatSink/3 [jpg_200 ] 201 ± 0% 201 ± 0% ~ (all samples are equal) BM_UFlatSink/4 [pdf ] 102k ± 0% 102k ± 0% ~ (all samples are equal) BM_UFlatSink/5 [html4 ] 410k ± 0% 410k ± 0% ~ (all samples are equal) BM_UFlatSink/6 [txt1 ] 152k ± 0% 152k ± 0% ~ (all samples are equal) BM_UFlatSink/7 [txt2 ] 125k ± 0% 125k ± 0% ~ (all samples are equal) BM_UFlatSink/8 [txt3 ] 427k ± 0% 427k ± 0% ~ (all samples are equal) BM_UFlatSink/9 [txt4 ] 482k ± 0% 482k ± 0% ~ (all samples are equal) BM_UFlatSink/10 [pb ] 119k ± 0% 119k ± 0% ~ (all samples are equal) BM_UFlatSink/11 [gaviota ] 184k ± 0% 184k ± 0% ~ (all samples are equal) BM_UFlatSink/12 [cp ] 24.6k ± 0% 24.6k ± 0% ~ (all samples are equal) BM_UFlatSink/13 [c ] 11.2k ± 0% 11.2k ± 0% ~ (all samples are equal) BM_UFlatSink/14 [lsp ] 3.72k ± 0% 3.72k ± 0% ~ (all samples are equal) BM_UFlatSink/15 [xls ] 1.03M ± 0% 1.03M ± 0% ~ (all samples are equal) BM_UFlatSink/16 [xls_200 ] 201 ± 0% 201 ± 0% ~ (all samples are equal) BM_UFlatSink/17 [bin ] 513k ± 0% 513k ± 0% ~ (all samples are equal) BM_UFlatSink/18 [bin_200 ] 201 ± 0% 201 ± 0% ~ (all samples are equal) BM_UFlatSink/19 [sum ] 38.2k ± 0% 38.2k ± 0% ~ (all samples are equal) BM_UFlatSink/20 [man ] 4.23k ± 0% 4.23k ± 0% ~ (all samples are equal) BM_ZFlat/0 [html (22.31 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/1 [urls (47.78 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/2 [jpg (99.95 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/3 [jpg_200 (73.00 %)] 30.7k ± 0% 30.7k ± 0% ~ (all samples are equal) BM_ZFlat/4 [pdf (83.30 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/5 [html4 (22.52 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/6 [txt1 (57.88 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/7 [txt2 (61.91 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/8 [txt3 (54.99 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/9 [txt4 (66.26 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/10 [pb (19.68 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/11 [gaviota (37.72 %)] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/12 [cp (48.12 %) ] 86.1k ± 0% 86.1k ± 0% ~ (all samples are equal) BM_ZFlat/13 [c (42.47 %) ] 57.0k ± 0% 57.0k ± 0% ~ (all samples are equal) BM_ZFlat/14 [lsp (48.37 %) ] 30.6k ± 0% 30.6k ± 0% ~ (all samples are equal) BM_ZFlat/15 [xls (41.23 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/16 [xls_200 (78.00 %)] 30.7k ± 0% 30.7k ± 0% ~ (all samples are equal) BM_ZFlat/17 [bin (18.11 %) ] 175k ± 0% 175k ± 0% ~ (all samples are equal) BM_ZFlat/18 [bin_200 (7.50 %) ] 30.7k ± 0% 30.7k ± 0% ~ (all samples are equal) BM_ZFlat/19 [sum (48.96 %) ] 116k ± 0% 116k ± 0% ~ (all samples are equal) BM_ZFlat/20 [man (59.21 %) ] 30.6k ± 0% 30.6k ± 0% ~ (all samples are equal) name old speed new speed delta BM_UFlat/0 [html ] 2.43GB/s ± 0% 2.41GB/s ± 0% -0.59% (p=0.032 n=5+5) BM_UFlat/1 [urls ] 1.19GB/s ± 1% 1.22GB/s ± 0% +2.58% (p=0.008 n=5+5) BM_UFlat/2 [jpg ] 17.2GB/s ± 1% 17.3GB/s ± 1% ~ (p=0.421 n=5+5) BM_UFlat/3 [jpg_200 ] 1.54GB/s ± 1% 1.56GB/s ± 1% +1.23% (p=0.008 n=5+5) BM_UFlat/4 [pdf ] 12.5GB/s ± 1% 12.5GB/s ± 0% ~ (p=0.413 n=5+4) BM_UFlat/5 [html4 ] 1.85GB/s ± 1% 1.85GB/s ± 0% ~ (p=0.690 n=5+5) BM_UFlat/6 [txt1 ] 793MB/s ± 0% 794MB/s ± 0% ~ (p=0.690 n=5+5) BM_UFlat/7 [txt2 ] 738MB/s ± 0% 742MB/s ± 1% ~ (p=0.151 n=5+5) BM_UFlat/8 [txt3 ] 839MB/s ± 0% 838MB/s ± 0% ~ (p=0.310 n=5+5) BM_UFlat/9 [txt4 ] 674MB/s ± 0% 684MB/s ± 0% +1.55% (p=0.008 n=5+5) BM_UFlat/10 [pb ] 3.07GB/s ± 1% 3.03GB/s ± 1% -1.27% (p=0.008 n=5+5) BM_UFlat/11 [gaviota ] 974MB/s ± 0% 978MB/s ± 0% +0.50% (p=0.032 n=5+5) BM_UFlat/12 [cp ] 1.72GB/s ± 0% 1.74GB/s ± 1% +0.79% (p=0.008 n=5+5) BM_UFlat/13 [c ] 1.52GB/s ± 1% 1.53GB/s ± 1% ~ (p=0.421 n=5+5) BM_UFlat/14 [lsp ] 1.62GB/s ± 1% 1.64GB/s ± 0% ~ (p=0.151 n=5+5) BM_UFlat/15 [xls ] 1.05GB/s ± 0% 1.14GB/s ± 1% +8.60% (p=0.008 n=5+5) BM_UFlat/16 [xls_200 ] 942MB/s ± 0% 941MB/s ± 1% ~ (p=0.690 n=5+5) BM_UFlat/17 [bin ] 1.85GB/s ± 0% 1.88GB/s ± 0% +1.60% (p=0.008 n=5+5) BM_UFlat/18 [bin_200 ] 1.99GB/s ± 0% 1.99GB/s ± 0% ~ (p=0.421 n=5+5) BM_UFlat/19 [sum ] 1.30GB/s ± 1% 1.37GB/s ± 1% +5.28% (p=0.008 n=5+5) BM_UFlat/20 [man ] 1.43GB/s ± 1% 1.42GB/s ± 0% ~ (p=0.421 n=5+5) BM_UValidate/0 [html ] 3.07GB/s ± 0% 3.05GB/s ± 1% ~ (p=0.222 n=5+5) BM_UValidate/1 [urls ] 1.59GB/s ± 0% 1.60GB/s ± 0% ~ (p=0.310 n=5+5) BM_UValidate/2 [jpg ] 845GB/s ± 0% 860GB/s ± 0% +1.75% (p=0.008 n=5+5) BM_UValidate/3 [jpg_200 ] 2.04GB/s ± 1% 2.11GB/s ± 1% +3.61% (p=0.008 n=5+5) BM_UValidate/4 [pdf ] 35.6GB/s ± 1% 36.1GB/s ± 1% +1.40% (p=0.016 n=5+5) BM_UIOVec/0 [html ] 845MB/s ± 1% 843MB/s ± 1% ~ (p=0.310 n=5+5) BM_UIOVec/1 [urls ] 653MB/s ± 0% 651MB/s ± 1% ~ (p=0.190 n=4+5) BM_UIOVec/2 [jpg ] 16.4GB/s ± 4% 16.1GB/s ± 5% ~ (p=0.548 n=5+5) BM_UIOVec/3 [jpg_200 ] 611MB/s ± 2% 614MB/s ± 0% ~ (p=0.548 n=5+5) BM_UIOVec/4 [pdf ] 8.53GB/s ± 1% 8.52GB/s ± 3% ~ (p=0.841 n=5+5) BM_UFlatSink/0 [html ] 2.43GB/s ± 1% 2.42GB/s ± 0% ~ (p=0.222 n=5+5) BM_UFlatSink/1 [urls ] 1.20GB/s ± 0% 1.23GB/s ± 1% +2.38% (p=0.008 n=5+5) BM_UFlatSink/2 [jpg ] 16.7GB/s ± 8% 16.0GB/s ± 8% ~ (p=0.151 n=5+5) BM_UFlatSink/3 [jpg_200 ] 1.50GB/s ± 0% 1.53GB/s ± 0% +2.13% (p=0.008 n=5+5) BM_UFlatSink/4 [pdf ] 12.5GB/s ± 0% 12.3GB/s ± 5% ~ (p=0.730 n=4+5) BM_UFlatSink/5 [html4 ] 1.85GB/s ± 0% 1.84GB/s ± 0% ~ (p=0.151 n=5+5) BM_UFlatSink/6 [txt1 ] 791MB/s ± 0% 791MB/s ± 0% ~ (p=1.000 n=5+5) BM_UFlatSink/7 [txt2 ] 735MB/s ± 0% 739MB/s ± 0% +0.51% (p=0.016 n=5+4) BM_UFlatSink/8 [txt3 ] 838MB/s ± 0% 840MB/s ± 0% ~ (p=0.151 n=5+5) BM_UFlatSink/9 [txt4 ] 674MB/s ± 0% 683MB/s ± 0% +1.37% (p=0.008 n=5+5) BM_UFlatSink/10 [pb ] 3.07GB/s ± 0% 3.03GB/s ± 1% -1.34% (p=0.008 n=5+5) BM_UFlatSink/11 [gaviota ] 973MB/s ± 0% 975MB/s ± 0% ~ (p=0.310 n=5+5) BM_UFlatSink/12 [cp ] 1.73GB/s ± 1% 1.74GB/s ± 1% ~ (p=0.056 n=5+5) BM_UFlatSink/13 [c ] 1.52GB/s ± 1% 1.53GB/s ± 1% +0.76% (p=0.032 n=5+5) BM_UFlatSink/14 [lsp ] 1.62GB/s ± 0% 1.63GB/s ± 0% ~ (p=0.548 n=5+5) BM_UFlatSink/15 [xls ] 1.05GB/s ± 0% 1.14GB/s ± 0% +8.57% (p=0.008 n=5+5) BM_UFlatSink/16 [xls_200 ] 925MB/s ± 0% 933MB/s ± 0% +0.85% (p=0.008 n=5+5) BM_UFlatSink/17 [bin ] 1.85GB/s ± 1% 1.88GB/s ± 0% +1.47% (p=0.008 n=5+5) BM_UFlatSink/18 [bin_200 ] 1.88GB/s ± 5% 1.93GB/s ± 0% ~ (p=0.421 n=5+5) BM_UFlatSink/19 [sum ] 1.30GB/s ± 1% 1.37GB/s ± 1% +5.18% (p=0.008 n=5+5) BM_UFlatSink/20 [man ] 1.41GB/s ± 0% 1.41GB/s ± 1% ~ (p=0.222 n=5+5) BM_ZFlat/0 [html (22.31 %) ] 809MB/s ± 0% 814MB/s ± 1% +0.61% (p=0.016 n=5+5) BM_ZFlat/1 [urls (47.78 %) ] 423MB/s ± 0% 422MB/s ± 0% ~ (p=0.548 n=5+5) BM_ZFlat/2 [jpg (99.95 %) ] 10.8GB/s ± 3% 10.6GB/s ± 5% ~ (p=0.690 n=5+5) BM_ZFlat/3 [jpg_200 (73.00 %)] 575MB/s ± 2% 579MB/s ± 0% ~ (p=1.000 n=5+4) BM_ZFlat/4 [pdf (83.30 %) ] 7.06GB/s ± 4% 7.05GB/s ± 2% ~ (p=0.421 n=5+5) BM_ZFlat/5 [html4 (22.52 %) ] 745MB/s ± 0% 744MB/s ± 0% ~ (p=0.421 n=5+5) BM_ZFlat/6 [txt1 (57.88 %) ] 282MB/s ± 0% 282MB/s ± 1% ~ (p=1.000 n=5+5) BM_ZFlat/7 [txt2 (61.91 %) ] 261MB/s ± 0% 263MB/s ± 0% +0.55% (p=0.032 n=5+5) BM_ZFlat/8 [txt3 (54.99 %) ] 297MB/s ± 1% 297MB/s ± 0% ~ (p=1.000 n=5+5) BM_ZFlat/9 [txt4 (66.26 %) ] 245MB/s ± 0% 246MB/s ± 0% ~ (p=0.286 n=5+5) BM_ZFlat/10 [pb (19.68 %) ] 1.08GB/s ± 1% 1.08GB/s ± 0% ~ (p=0.056 n=5+5) BM_ZFlat/11 [gaviota (37.72 %)] 450MB/s ± 0% 452MB/s ± 0% +0.55% (p=0.016 n=5+5) BM_ZFlat/12 [cp (48.12 %) ] 537MB/s ± 1% 538MB/s ± 0% ~ (p=0.421 n=5+5) BM_ZFlat/13 [c (42.47 %) ] 637MB/s ± 1% 634MB/s ± 1% ~ (p=0.222 n=5+5) BM_ZFlat/14 [lsp (48.37 %) ] 684MB/s ± 1% 680MB/s ± 0% ~ (p=0.310 n=5+5) BM_ZFlat/15 [xls (41.23 %) ] 641MB/s ± 0% 640MB/s ± 1% ~ (p=0.310 n=5+5) BM_ZFlat/16 [xls_200 (78.00 %)] 501MB/s ± 9% 521MB/s ± 1% ~ (p=0.111 n=5+4) BM_ZFlat/17 [bin (18.11 %) ] 1.01GB/s ± 0% 1.02GB/s ± 1% ~ (p=0.151 n=5+5) BM_ZFlat/18 [bin_200 (7.50 %) ] 2.24GB/s ±14% 2.48GB/s ± 0% ~ (p=0.063 n=5+4) BM_ZFlat/19 [sum (48.96 %) ] 473MB/s ± 1% 485MB/s ± 1% +2.47% (p=0.008 n=5+5) BM_ZFlat/20 [man (59.21 %) ] 558MB/s ± 1% 558MB/s ± 1% ~ (p=1.000 n=5+5)
This commit is contained in:
parent
fdba21ffd6
commit
46768e335d
16
snappy.cc
16
snappy.cc
|
@ -709,6 +709,20 @@ static inline uint32 ExtractLowBytes(uint32 v, int n) {
|
|||
#endif
|
||||
}
|
||||
|
||||
static inline bool LeftShiftOverflows(uint32 value, uint32 shift) {
|
||||
DCHECK_LT(shift, 32);
|
||||
static const uint32 masks[] = {
|
||||
0x00000000, 0x80000000, 0xc0000000, 0xe0000000, //
|
||||
0xf0000000, 0xf8000000, 0xfc000000, 0xfe000000, //
|
||||
0xff000000, 0xff800000, 0xffc00000, 0xffe00000, //
|
||||
0xfff00000, 0xfff80000, 0xfffc0000, 0xfffe0000, //
|
||||
0xffff0000, 0xffff8000, 0xffffc000, 0xffffe000, //
|
||||
0xfffff000, 0xfffff800, 0xfffffc00, 0xfffffe00, //
|
||||
0xffffff00, 0xffffff80, 0xffffffc0, 0xffffffe0, //
|
||||
0xfffffff0, 0xfffffff8, 0xfffffffc, 0xfffffffe};
|
||||
return (value & masks[shift]) != 0;
|
||||
}
|
||||
|
||||
// Helper class for decompression
|
||||
class SnappyDecompressor {
|
||||
private:
|
||||
|
@ -761,7 +775,7 @@ class SnappyDecompressor {
|
|||
const unsigned char c = *(reinterpret_cast<const unsigned char*>(ip));
|
||||
reader_->Skip(1);
|
||||
uint32 val = c & 0x7f;
|
||||
if (((val << shift) >> shift) != val) return false;
|
||||
if (LeftShiftOverflows(val, shift)) return false;
|
||||
*result |= val << shift;
|
||||
if (c < 128) {
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue