1'use strict'; 2 3const common = require('../common.js'); 4 5const bench = common.createBenchmark(main, { 6 n: [100000], 7 method: ['trace', 'isTraceCategoryEnabled'] 8}, { 9 flags: [ 10 '--expose-internals', 11 '--no-warnings', 12 '--trace-event-categories', 'foo', 13 ] 14}); 15 16const { 17 TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN: kBeforeEvent 18} = common.binding('constants').trace; 19 20function doTrace(n, trace) { 21 bench.start(); 22 for (let i = 0; i < n; i++) { 23 trace(kBeforeEvent, 'foo', 'test', 0, 'test'); 24 } 25 bench.end(n); 26} 27 28function doIsTraceCategoryEnabled(n, isTraceCategoryEnabled) { 29 bench.start(); 30 for (let i = 0; i < n; i++) { 31 isTraceCategoryEnabled('foo'); 32 isTraceCategoryEnabled('bar'); 33 } 34 bench.end(n); 35} 36 37function main({ n, method }) { 38 const { 39 trace, 40 isTraceCategoryEnabled 41 } = common.binding('trace_events'); 42 43 switch (method) { 44 case 'trace': 45 doTrace(n, trace); 46 break; 47 case 'isTraceCategoryEnabled': 48 doIsTraceCategoryEnabled(n, isTraceCategoryEnabled); 49 break; 50 default: 51 throw new Error(`Unexpected method "${method}"`); 52 } 53} 54