Skip to content

stream: avoid unnecessary drain for sync stream

Rodrigo Muino Tomonari requested to merge github/fork/nxtedition/drain-sync into main

We have tried this before but reverted due to:

https://github.com/nodejs/node/commit/2868f52a5c98717ba783d668718481e14556a4ee https://github.com/nodejs/node/issues/35926

However, it has quite a significant performance improvement and doesn't actually break the "streams spec". Let's have another look at it.

streams/writable-manywrites.js len=1024 callback='no' writev='no' sync='no' n=100000            ***      7.14 %       ±2.24% ±2.98%  ±3.90%
streams/writable-manywrites.js len=1024 callback='no' writev='no' sync='yes' n=100000            **      4.12 %       ±2.47% ±3.29%  ±4.28%
streams/writable-manywrites.js len=1024 callback='no' writev='yes' sync='no' n=100000           ***      6.89 %       ±2.21% ±2.94%  ±3.84%
streams/writable-manywrites.js len=1024 callback='no' writev='yes' sync='yes' n=100000          ***     10.73 %       ±2.25% ±3.00%  ±3.90%
streams/writable-manywrites.js len=1024 callback='yes' writev='no' sync='no' n=100000           ***      8.46 %       ±2.40% ±3.21%  ±4.23%
streams/writable-manywrites.js len=1024 callback='yes' writev='no' sync='yes' n=100000           **      3.00 %       ±1.86% ±2.49%  ±3.27%
streams/writable-manywrites.js len=1024 callback='yes' writev='yes' sync='no' n=100000          ***      7.99 %       ±4.00% ±5.34%  ±6.99%
streams/writable-manywrites.js len=1024 callback='yes' writev='yes' sync='yes' n=100000         ***      9.51 %       ±5.19% ±6.97%  ±9.20%
streams/writable-manywrites.js len=32768 callback='no' writev='no' sync='no' n=100000           ***      7.11 %       ±2.05% ±2.73%  ±3.55%
streams/writable-manywrites.js len=32768 callback='no' writev='no' sync='yes' n=100000          ***    233.76 %       ±6.96% ±9.35% ±12.37%
streams/writable-manywrites.js len=32768 callback='no' writev='yes' sync='no' n=100000          ***      6.40 %       ±1.06% ±1.42%  ±1.85%
streams/writable-manywrites.js len=32768 callback='no' writev='yes' sync='yes' n=100000         ***    215.94 %       ±4.96% ±6.66%  ±8.79%
streams/writable-manywrites.js len=32768 callback='yes' writev='no' sync='no' n=100000          ***      6.51 %       ±1.51% ±2.01%  ±2.61%
streams/writable-manywrites.js len=32768 callback='yes' writev='no' sync='yes' n=100000         ***    213.41 %       ±3.75% ±5.01%  ±6.57%
streams/writable-manywrites.js len=32768 callback='yes' writev='yes' sync='no' n=100000         ***      5.80 %       ±1.54% ±2.06%  ±2.69%
streams/writable-manywrites.js len=32768 callback='yes' writev='yes' sync='yes' n=100000        ***    194.75 %       ±4.29% ±5.77%  ±7.62%

Merge request reports

Loading