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
						
					
					
				| 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);
 | |
|     })
 | |
| ;
 |