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
						
					
					
				| '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)
 |