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.
		
		
		
		
		
			
		
			
				
					81 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					81 lines
				
				1.6 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								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);
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								;
							 |