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.
		
		
		
		
		
			
		
			
				
					224 lines
				
				6.7 KiB
			
		
		
			
		
	
	
					224 lines
				
				6.7 KiB
			| 
											3 years ago
										 | 'use strict' | ||
|  | const bench = require('fastbench') | ||
|  | const fastRedact = require('..') | ||
|  | 
 | ||
|  | const censorFn = (v) => v + '.' | ||
|  | const censorFnWithPath = (v, p) => v + '.' + p | ||
|  | 
 | ||
|  | const noir = require('pino-noir')(['aa.b.c']) | ||
|  | const redactNoSerialize = fastRedact({ paths: ['ab.b.c'], serialize: false }) | ||
|  | const redactNoSerializeRestore = fastRedact({ paths: ['ac.b.c'], serialize: false }) | ||
|  | const noirWild = require('pino-noir')(['ad.b.*']) | ||
|  | const redactWildNoSerialize = fastRedact({ paths: ['ae.b.*'], serialize: false }) | ||
|  | const redactWildNoSerializeRestore = fastRedact({ paths: ['af.b.*'], serialize: false }) | ||
|  | const redactIntermediateWildNoSerialize = fastRedact({ paths: ['ag.*.c'], serialize: false }) | ||
|  | const redactIntermediateWildNoSerializeRestore = fastRedact({ paths: ['ah.*.c'], serialize: false }) | ||
|  | const noirJSONSerialize = require('pino-noir')(['aj.b.c']) // `ai` used in pure JSON test.
 | ||
|  | const redact = fastRedact({ paths: ['ak.b.c'] }) | ||
|  | const noirWildJSONSerialize = require('pino-noir')(['al.b.c']) | ||
|  | const redactWild = fastRedact({ paths: ['am.b.*'] }) | ||
|  | const redactIntermediateWild = fastRedact({ paths: ['an.*.c'] }) | ||
|  | const redactIntermediateWildMatchWildOutcome = fastRedact({ paths: ['ao.*.c', 'ao.*.b', 'ao.*.a'] }) | ||
|  | const redactStaticMatchWildOutcome = fastRedact({ paths: ['ap.b.c', 'ap.d.a', 'ap.d.b', 'ap.d.c'] }) | ||
|  | const noirCensorFunction = require('pino-noir')(['aq.b.*'], censorFn) | ||
|  | const redactCensorFunction = fastRedact({ paths: ['ar.b.*'], censor: censorFn, serialize: false }) | ||
|  | const redactIntermediateWildCensorFunction = fastRedact({ paths: ['as.*.c'], censor: censorFn, serialize: false }) | ||
|  | const redactCensorFunctionWithPath = fastRedact({ paths: ['at.d.b'], censor: censorFn, serialize: false }) | ||
|  | const redactWildCensorFunctionWithPath = fastRedact({ paths: ['au.d.*'], censor: censorFnWithPath, serialize: false }) | ||
|  | const redactIntermediateWildCensorFunctionWithPath = fastRedact({ paths: ['av.*.c'], censorFnWithPath, serialize: false }) | ||
|  | const redactMultiWild = fastRedact({ paths: ['aw.*.*'] }) | ||
|  | const redactMultiWildCensorFunction = fastRedact({ paths: ['ax.*.*'], censor: censorFn, serialize: false }) | ||
|  | 
 | ||
|  | const getObj = (outerKey) => ({ | ||
|  |   [outerKey]: { | ||
|  |     b: { | ||
|  |       c: 's' | ||
|  |     }, | ||
|  |     d: { | ||
|  |       a: 's', | ||
|  |       b: 's', | ||
|  |       c: 's' | ||
|  |     } | ||
|  |   } | ||
|  | }) | ||
|  | 
 | ||
|  | const max = 500 | ||
|  | 
 | ||
|  | var run = bench([ | ||
|  |   function benchNoirV2 (cb) { | ||
|  |     const obj = getObj('aa') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       noir.aa(obj.aa) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedact (cb) { | ||
|  |     const obj = getObj('ab') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactNoSerialize(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactRestore (cb) { | ||
|  |     const obj = getObj('ac') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactNoSerializeRestore(obj) | ||
|  |       redactNoSerializeRestore.restore(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchNoirV2Wild (cb) { | ||
|  |     const obj = getObj('ad') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       noirWild.ad(obj.ad) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactWild (cb) { | ||
|  |     const obj = getObj('ae') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactWildNoSerialize(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactWildRestore (cb) { | ||
|  |     const obj = getObj('af') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactWildNoSerializeRestore(obj) | ||
|  |       redactWildNoSerializeRestore.restore(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactIntermediateWild (cb) { | ||
|  |     const obj = getObj('ag') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactIntermediateWildNoSerialize(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactIntermediateWildRestore (cb) { | ||
|  |     const obj = getObj('ah') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactIntermediateWildNoSerializeRestore(obj) | ||
|  |       redactIntermediateWildNoSerializeRestore.restore(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchJSONStringify (cb) { | ||
|  |     const obj = getObj('ai') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       JSON.stringify(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchNoirV2Serialize (cb) { | ||
|  |     const obj = getObj('aj') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       noirJSONSerialize.aj(obj.aj) | ||
|  |       JSON.stringify(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactSerialize (cb) { | ||
|  |     const obj = getObj('ak') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redact(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchNoirV2WildSerialize (cb) { | ||
|  |     const obj = getObj('al') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       noirWildJSONSerialize.al(obj.al) | ||
|  |       JSON.stringify(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactWildSerialize (cb) { | ||
|  |     const obj = getObj('am') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactWild(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactIntermediateWildSerialize (cb) { | ||
|  |     const obj = getObj('an') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactIntermediateWild(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactIntermediateWildMatchWildOutcomeSerialize (cb) { | ||
|  |     const obj = getObj('ao') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactIntermediateWildMatchWildOutcome(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactStaticMatchWildOutcomeSerialize (cb) { | ||
|  |     const obj = getObj('ap') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactStaticMatchWildOutcome(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchNoirV2CensorFunction (cb) { | ||
|  |     const obj = getObj('aq') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       noirCensorFunction.aq(obj.aq) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactCensorFunction (cb) { | ||
|  |     const obj = getObj('ar') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactCensorFunction(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactCensorFunctionIntermediateWild (cb) { | ||
|  |     const obj = getObj('as') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactIntermediateWildCensorFunction(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactCensorFunctionWithPath (cb) { | ||
|  |     const obj = getObj('at') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactCensorFunctionWithPath(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactWildCensorFunctionWithPath (cb) { | ||
|  |     const obj = getObj('au') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactWildCensorFunctionWithPath(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactIntermediateWildCensorFunctionWithPath (cb) { | ||
|  |     const obj = getObj('av') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactIntermediateWildCensorFunctionWithPath(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactMultiWild (cb) { | ||
|  |     const obj = getObj('aw') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactMultiWild(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   }, | ||
|  |   function benchFastRedactMultiWildCensorFunction (cb) { | ||
|  |     const obj = getObj('ax') | ||
|  |     for (var i = 0; i < max; i++) { | ||
|  |       redactMultiWildCensorFunction(obj) | ||
|  |     } | ||
|  |     setImmediate(cb) | ||
|  |   } | ||
|  | ], 500) | ||
|  | 
 | ||
|  | run(run) |