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.
80 lines
1.6 KiB
80 lines
1.6 KiB
var Seq = require('seq'); |
|
var Hash = require('hashish'); |
|
|
|
var Bin = require('binary'); |
|
var Buf = require('bufferlist/binary'); |
|
var BufferList = require('bufferlist'); |
|
var EventEmitter = require('events').EventEmitter; |
|
|
|
function binary (buf, cb) { |
|
Bin(buf) |
|
.word32le('x') |
|
.word16be('y') |
|
.word16be('z') |
|
.word32le('w') |
|
.tap(cb) |
|
; |
|
}; |
|
|
|
function stream (buf, cb) { |
|
var em = new EventEmitter; |
|
Bin(em) |
|
.word32le('x') |
|
.word16be('y') |
|
.word16be('z') |
|
.word32le('w') |
|
.tap(cb) |
|
; |
|
em.emit('data', buf); |
|
}; |
|
|
|
function parse (buf, cb) { |
|
cb(Bin.parse(buf) |
|
.word32le('x') |
|
.word16be('y') |
|
.word16be('z') |
|
.word32le('w') |
|
.vars |
|
); |
|
}; |
|
|
|
function bufferlist (buf, cb) { |
|
var blist = new BufferList; |
|
blist.push(buf); |
|
Buf(blist) |
|
.getWord32le('x') |
|
.getWord16be('y') |
|
.getWord16be('z') |
|
.getWord32le('w') |
|
.tap(cb) |
|
.end() |
|
; |
|
}; |
|
|
|
|
|
var buffers = []; |
|
for (var i = 0; i < 200; i++) { |
|
buffers.push(new Buffer(12)); |
|
} |
|
|
|
console.log('small'); |
|
Seq(binary, stream, parse, bufferlist) |
|
.seqEach(function (f) { |
|
var t = this; |
|
var t0 = Date.now(); |
|
Seq() |
|
.extend(buffers) |
|
.seqEach(function (buf) { |
|
f(buf, this.bind(this, null)); |
|
}) |
|
.seq(function () { |
|
var tf = Date.now(); |
|
console.log(' ' + f.name + ': ' + (tf - t0)); |
|
t(null); |
|
}) |
|
; |
|
}) |
|
.seq(function () { |
|
this(null); |
|
}) |
|
;
|
|
|