Performance: Transform streams for processing
This affects how efficiently data is processed and passed through the pipeline without blocking the event loop or causing memory bloat.
Jump into concepts and practice - no test required
const { Transform } = require('stream');
const fs = require('fs');
const upperCaseTransform = new Transform({
transform(chunk, encoding, callback) {
this.push(chunk.toString().toUpperCase());
callback();
}
});
fs.createReadStream('largefile.txt')
.pipe(upperCaseTransform)
.pipe(fs.createWriteStream('output.txt'));const fs = require('fs'); const data = fs.readFileSync('largefile.txt', 'utf8'); const processed = data.toUpperCase(); fs.writeFileSync('output.txt', processed);
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Synchronous full file read/write | N/A | N/A | N/A | [X] Bad |
| Asynchronous transform streams chunk processing | N/A | N/A | N/A | [OK] Good |
Transform stream in Node.js?stream module in Node.js?transform method to process chunks.new Transform with a transform method. const { Transform } = require('stream'); const myTransform = new Transform({ read() {} }); incorrectly uses read instead of transform.const { Transform } = require('stream');
const upperCase = new Transform({
transform(chunk, encoding, callback) {
this.push(chunk.toString().toUpperCase());
callback();
}
});
upperCase.on('data', data => console.log(data.toString()));
upperCase.write('hello');
upperCase.end();const { Transform } = require('stream');
const reverse = new Transform({
transform(chunk, encoding, callback) {
const reversed = chunk.toString().split('').reverse().join('');
callback(null, reversed);
}
});this.push(), not passed as the second argument to callback.callback(null, reversed) instead of pushing reversed data and then calling callback().