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