diff options
Diffstat (limited to 'deps/node/benchmark/net/net-c2s.js')
-rw-r--r-- | deps/node/benchmark/net/net-c2s.js | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/deps/node/benchmark/net/net-c2s.js b/deps/node/benchmark/net/net-c2s.js deleted file mode 100644 index 732bda13..00000000 --- a/deps/node/benchmark/net/net-c2s.js +++ /dev/null @@ -1,100 +0,0 @@ -// Test the speed of .pipe() with sockets -'use strict'; - -const common = require('../common.js'); -const net = require('net'); -const PORT = common.PORT; - -const bench = common.createBenchmark(main, { - len: [64, 102400, 1024 * 1024 * 16], - type: ['utf', 'asc', 'buf'], - dur: [5], -}); - -var chunk; -var encoding; - -function main({ dur, len, type }) { - switch (type) { - case 'buf': - chunk = Buffer.alloc(len, 'x'); - break; - case 'utf': - encoding = 'utf8'; - chunk = 'ΓΌ'.repeat(len / 2); - break; - case 'asc': - encoding = 'ascii'; - chunk = 'x'.repeat(len); - break; - default: - throw new Error(`invalid type: ${type}`); - } - - const reader = new Reader(); - const writer = new Writer(); - - // the actual benchmark. - const server = net.createServer((socket) => { - socket.pipe(writer); - }); - - server.listen(PORT, () => { - const socket = net.connect(PORT); - socket.on('connect', () => { - bench.start(); - - reader.pipe(socket); - - setTimeout(() => { - const bytes = writer.received; - const gbits = (bytes * 8) / (1024 * 1024 * 1024); - bench.end(gbits); - process.exit(0); - }, dur * 1000); - }); - }); -} - -function Writer() { - this.received = 0; - this.writable = true; -} - -Writer.prototype.write = function(chunk, encoding, cb) { - this.received += chunk.length; - - if (typeof encoding === 'function') - encoding(); - else if (typeof cb === 'function') - cb(); - - return true; -}; - -// Doesn't matter, never emits anything. -Writer.prototype.on = function() {}; -Writer.prototype.once = function() {}; -Writer.prototype.emit = function() {}; -Writer.prototype.prependListener = function() {}; - - -function flow() { - const dest = this.dest; - const res = dest.write(chunk, encoding); - if (!res) - dest.once('drain', this.flow); - else - process.nextTick(this.flow); -} - -function Reader() { - this.flow = flow.bind(this); - this.readable = true; -} - -Reader.prototype.pipe = function(dest) { - this.dest = dest; - this.flow(); - return dest; -}; |