stream: avoid drain for sync streams
Previously a sync writable receiving chunks larger than highwatermark would unecessarily ping pong needDrain.
300% improvement for sync streams when chunks are bigger than HWM.
streams/writable-manywrites.js len=1024 callback='no' writev='no' sync='no' n=2000000 1.84 % ±3.27% ±4.39% ±5.79%
streams/writable-manywrites.js len=1024 callback='no' writev='no' sync='yes' n=2000000 2.00 % ±2.02% ±2.70% ±3.54%
streams/writable-manywrites.js len=1024 callback='no' writev='yes' sync='no' n=2000000 1.68 % ±2.12% ±2.83% ±3.68%
streams/writable-manywrites.js len=1024 callback='no' writev='yes' sync='yes' n=2000000 1.31 % ±2.44% ±3.25% ±4.23%
streams/writable-manywrites.js len=1024 callback='yes' writev='no' sync='no' n=2000000 0.19 % ±1.77% ±2.36% ±3.08%
streams/writable-manywrites.js len=1024 callback='yes' writev='no' sync='yes' n=2000000 * 2.60 % ±2.46% ±3.28% ±4.28%
streams/writable-manywrites.js len=1024 callback='yes' writev='yes' sync='no' n=2000000 1.32 % ±2.37% ±3.16% ±4.14%
streams/writable-manywrites.js len=1024 callback='yes' writev='yes' sync='yes' n=2000000 -1.15 % ±2.59% ±3.46% ±4.53%
streams/writable-manywrites.js len=32768 callback='no' writev='no' sync='no' n=2000000 0.42 % ±2.27% ±3.04% ±4.00%
streams/writable-manywrites.js len=32768 callback='no' writev='no' sync='yes' n=2000000 *** 308.72 % ±7.84% ±10.53% ±13.91%
streams/writable-manywrites.js len=32768 callback='no' writev='yes' sync='no' n=2000000 0.22 % ±1.78% ±2.37% ±3.10%
streams/writable-manywrites.js len=32768 callback='no' writev='yes' sync='yes' n=2000000 *** 274.22 % ±6.83% ±9.20% ±12.20%
streams/writable-manywrites.js len=32768 callback='yes' writev='no' sync='no' n=2000000 1.56 % ±2.40% ±3.23% ±4.27%
streams/writable-manywrites.js len=32768 callback='yes' writev='no' sync='yes' n=2000000 *** 323.42 % ±5.95% ±8.00% ±10.60%
streams/writable-manywrites.js len=32768 callback='yes' writev='yes' sync='no' n=2000000 -0.42 % ±1.90% ±2.55% ±3.35%
streams/writable-manywrites.js len=32768 callback='yes' writev='yes' sync='yes' n=2000000 *** 287.75 % ±7.60% ±10.21% ±13.50%
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