You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
1.9 KiB
86 lines
1.9 KiB
'use strict'
|
|
|
|
const bench = require('fastbench')
|
|
const SonicBoom = require('sonic-boom')
|
|
const ThreadStream = require('.')
|
|
const Console = require('console').Console
|
|
const fs = require('fs')
|
|
const { join } = require('path')
|
|
|
|
const core = fs.createWriteStream('/dev/null')
|
|
const fd = fs.openSync('/dev/null', 'w')
|
|
const sonic = new SonicBoom({ fd })
|
|
const sonicSync = new SonicBoom({ fd, sync: true })
|
|
const out = fs.createWriteStream('/dev/null')
|
|
const dummyConsole = new Console(out)
|
|
const threadStreamSync = new ThreadStream({
|
|
filename: join(__dirname, 'test', 'to-file.js'),
|
|
workerData: { dest: '/dev/null' },
|
|
bufferSize: 4 * 1024 * 1024,
|
|
sync: true
|
|
})
|
|
const threadStreamAsync = new ThreadStream({
|
|
filename: join(__dirname, 'test', 'to-file.js'),
|
|
workerData: { dest: '/dev/null' },
|
|
bufferSize: 4 * 1024 * 1024,
|
|
sync: false
|
|
})
|
|
|
|
const MAX = 10000
|
|
|
|
let str = ''
|
|
|
|
for (let i = 0; i < 10; i++) {
|
|
str += 'hello'
|
|
}
|
|
|
|
setTimeout(doBench, 100)
|
|
|
|
const run = bench([
|
|
function benchThreadStreamSync (cb) {
|
|
for (let i = 0; i < MAX; i++) {
|
|
threadStreamSync.write(str)
|
|
}
|
|
setImmediate(cb)
|
|
},
|
|
function benchThreadStreamAsync (cb) {
|
|
threadStreamAsync.once('drain', cb)
|
|
for (let i = 0; i < MAX; i++) {
|
|
threadStreamAsync.write(str)
|
|
}
|
|
},
|
|
function benchSonic (cb) {
|
|
sonic.once('drain', cb)
|
|
for (let i = 0; i < MAX; i++) {
|
|
sonic.write(str)
|
|
}
|
|
},
|
|
function benchSonicSync (cb) {
|
|
sonicSync.once('drain', cb)
|
|
for (let i = 0; i < MAX; i++) {
|
|
sonicSync.write(str)
|
|
}
|
|
},
|
|
function benchCore (cb) {
|
|
core.once('drain', cb)
|
|
for (let i = 0; i < MAX; i++) {
|
|
core.write(str)
|
|
}
|
|
},
|
|
function benchConsole (cb) {
|
|
for (let i = 0; i < MAX; i++) {
|
|
dummyConsole.log(str)
|
|
}
|
|
setImmediate(cb)
|
|
}
|
|
], 1000)
|
|
|
|
function doBench () {
|
|
run(function () {
|
|
run(function () {
|
|
// TODO figure out why it does not shut down
|
|
process.exit(0)
|
|
})
|
|
})
|
|
}
|