Performance: Writing data with Writable streams
MEDIUM IMPACT
This concept affects how efficiently data is written to streams, impacting memory usage and responsiveness during I/O operations.
const fs = require('fs'); const writable = fs.createWriteStream('output.txt'); function writeData(i) { let ok = true; while (i < 1e6 && ok) { ok = writable.write('Line ' + i + '\n'); i++; } if (i < 1e6) { writable.once('drain', () => writeData(i)); } else { writable.end(); } } writeData(0);
const fs = require('fs'); const writable = fs.createWriteStream('output.txt'); for (let i = 0; i < 1e6; i++) { writable.write('Line ' + i + '\n'); } writable.end();
| Pattern | Memory Usage | Event Loop Blocking | Backpressure Handling | Verdict |
|---|---|---|---|---|
| Writing without backpressure check | High (buffers grow large) | Yes (blocks event loop) | No | [X] Bad |
| Writing with backpressure and drain event | Low (buffers controlled) | No (event loop stays responsive) | Yes | [OK] Good |