Package Exports
- sonic-boom
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sonic-boom) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
sonic-boom 
Extremely fast utf8-only stream implementation to write to files and file descriptors.
This implementation is partial, but support backpressure and .pipe() in is here.
However, it is 2-3x faster than Node Core fs.createWriteStream():
benchSonic*1000: 1916.904ms
benchSonicSync*1000: 8605.265ms
benchSonic4k*1000: 1965.231ms
benchSonicSync4k*1000: 1588.224ms
benchCore*1000: 5851.959ms
benchConsole*1000: 7605.713msNote that sync mode without buffering is slower than a Node Core WritableStream, however
this mode matches the expected behavior of console.log().
Note that if this is used to log to a windows terminal (cmd.exe or
powershell), it is needed to run chcp 65001 in the terminal to
correctly display utf-8 characters, see
chcp for more details.
Install
npm i sonic-boomExample
'use strict'
const SonicBoom = require('sonic-boom')
const sonic = new SonicBoom({ fd: process.stdout.fd }) // or { dest: '/path/to/destination' }
for (var i = 0; i < 10; i++) {
sonic.write('hello sonic\n')
}API
SonicBoom(opts)
Creates a new instance of SonicBoom.
The options are:
fd: a file descriptor, something that is returned byfs.openorfs.openSync.dest: a string that is a path to a file to be written to (mode'a').minLength: the minimum lenght of the internal buffer that is required to be full before flushing.sync: perform writes synchronously (similar toconsole.log).
A SonicBoom instance will emit the 'ready' event when a file descriptor is available.
SonicBoom#write(string)
Writes the string to the file. It will return false to signal the producer to slow down.
SonicBoom#flush()
Writes the current buffer to the file if a write was not in progress.
Do nothing if minLength is zero or if it is already writing.
SonicBoom#reopen([file])
Reopen the file in place, useful for log rotation.
Example:
const stream = new SonicBoom('./my.log')
process.on('SIGUSR2', function () {
stream.reopen()
})SonicBoom#flushSync()
Flushes the buffered data synchronously. This is a costly operation.
SonicBoom#end()
Closes the stream, the data will be flushed down asynchronously
SonicBook#destroy()
Closes the stream immediately, the data is not flushed.
License
MIT