From b0ab564d45c8d54c1613d3f00e9f0dd812df2588 Mon Sep 17 00:00:00 2001 From: Evan Lucas Date: Mon, 22 Feb 2016 02:55:42 -0600 Subject: [PATCH] benchmark: add util.format benchmark PR-URL: https://github.com/nodejs/node/pull/5360 Reviewed-By: James M Snell --- benchmark/util/format.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 benchmark/util/format.js diff --git a/benchmark/util/format.js b/benchmark/util/format.js new file mode 100644 index 00000000000000..6a0b6c63dc1087 --- /dev/null +++ b/benchmark/util/format.js @@ -0,0 +1,40 @@ +'use strict'; + +const util = require('util'); +const common = require('../common'); +const v8 = require('v8'); +const bench = common.createBenchmark(main, { + n: [1e6] +, type: ['string', + 'number', + 'object', + 'unknown', + 'no-replace'] +}); + +const inputs = { + 'string': ['Hello, my name is %s', 'fred'], + 'number': ['Hi, I was born in %d', 1942], + 'object': ['An error occurred %j', {msg: 'This is an error', code: 'ERR'}], + 'unknown': ['hello %a', 'test'], + 'no-replace': [1, 2] +}; + +function main(conf) { + const n = conf.n | 0; + const type = conf.type; + + const input = inputs[type]; + + v8.setFlagsFromString('--allow_natives_syntax'); + + util.format(input[0], input[1]); + eval('%OptimizeFunctionOnNextCall(util.format)'); + util.format(input[0], input[1]); + + bench.start(); + for (var i = 0; i < n; i++) { + util.format(input[0], input[1]); + } + bench.end(n); +}