stream: avoid unnecessary drain for sync stream
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%