string_decoder: support Uint8Array input to methods
This includes a bit of refactoring for the Buffer
internals to keep up performance. Some quick benchmark results (only the string-decoder
benchmark, excluding the bigger input/chunk sizes and with reduced n
):
$ ./node benchmark/compare.js --new ./node --old ./node-d08836003c57 --runs 5 --filter string-decoder.js string_decoder| Rscript benchmark/compare.R
[00:01:37|% 100| 1/1 files | 10/10 runs | 20/20 configs]: Done
improvement confidence p.value
string_decoder/string-decoder.js n=250000 chunk=16 inlen=128 encoding="ascii" 14.65 % *** 1.092735e-06
string_decoder/string-decoder.js n=250000 chunk=16 inlen=128 encoding="base64-ascii" 8.52 % *** 6.202910e-05
string_decoder/string-decoder.js n=250000 chunk=16 inlen=128 encoding="base64-utf8" 5.27 % 7.176679e-02
string_decoder/string-decoder.js n=250000 chunk=16 inlen=128 encoding="utf16le" 4.37 % * 1.891394e-02
string_decoder/string-decoder.js n=250000 chunk=16 inlen=128 encoding="utf8" 14.01 % *** 1.475088e-04
string_decoder/string-decoder.js n=250000 chunk=16 inlen=32 encoding="ascii" 20.33 % *** 1.058625e-08
string_decoder/string-decoder.js n=250000 chunk=16 inlen=32 encoding="base64-ascii" 8.51 % * 1.025246e-02
string_decoder/string-decoder.js n=250000 chunk=16 inlen=32 encoding="base64-utf8" -0.67 % 8.260933e-01
string_decoder/string-decoder.js n=250000 chunk=16 inlen=32 encoding="utf16le" 10.16 % *** 6.193190e-05
string_decoder/string-decoder.js n=250000 chunk=16 inlen=32 encoding="utf8" 7.54 % *** 6.250636e-04
string_decoder/string-decoder.js n=250000 chunk=64 inlen=128 encoding="ascii" 16.56 % *** 1.856548e-05
string_decoder/string-decoder.js n=250000 chunk=64 inlen=128 encoding="base64-ascii" 8.68 % *** 2.254509e-05
string_decoder/string-decoder.js n=250000 chunk=64 inlen=128 encoding="base64-utf8" 6.20 % 7.669403e-02
string_decoder/string-decoder.js n=250000 chunk=64 inlen=128 encoding="utf16le" 7.12 % *** 2.359718e-05
string_decoder/string-decoder.js n=250000 chunk=64 inlen=128 encoding="utf8" 3.33 % * 1.040546e-02
string_decoder/string-decoder.js n=250000 chunk=64 inlen=32 encoding="ascii" 18.07 % *** 9.677031e-07
string_decoder/string-decoder.js n=250000 chunk=64 inlen=32 encoding="base64-ascii" 12.49 % ** 4.455920e-03
string_decoder/string-decoder.js n=250000 chunk=64 inlen=32 encoding="base64-utf8" 2.96 % 2.299725e-01
string_decoder/string-decoder.js n=250000 chunk=64 inlen=32 encoding="utf16le" 9.82 % *** 8.056526e-06
string_decoder/string-decoder.js n=250000 chunk=64 inlen=32 encoding="utf8" 7.09 % *** 7.882838e-04
Checklist
-
make -j4 test
(UNIX), orvcbuild test
(Windows) passes -
tests and/or benchmarks are included -
documentation is changed or added -
commit message follows commit guidelines
Affected core subsystem(s)
string_decoder, buffer