333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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);
    })
;