Skip to content

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), or vcbuild 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

Merge request reports

Loading