diff --git a/benchmark/assert/ok.js b/benchmark/assert/ok.js new file mode 100644 index 00000000000000..849be65539aef7 --- /dev/null +++ b/benchmark/assert/ok.js @@ -0,0 +1,20 @@ +'use strict'; + +const common = require('../common.js'); +const assert = require('assert'); + +const bench = common.createBenchmark(main, { + n: [1e9] +}); + +function main({ n }) { + var i; + bench.start(); + for (i = 0; i < n; ++i) { + if (i % 2 === 0) + assert(true); + else + assert(true, 'foo bar baz'); + } + bench.end(n); +} diff --git a/lib/assert.js b/lib/assert.js index 797252afc0e01e..ccc1de3a25d06a 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -206,13 +206,11 @@ function getErrMessage(call) { } } -function innerOk(args, fn) { - var [value, message] = args; - +function innerOk(fn, argLen, value, message) { if (!value) { let generatedMessage = false; - if (args.length === 0) { + if (argLen === 0) { generatedMessage = true; message = 'No value argument passed to `assert.ok()`'; } else if (message == null) { @@ -253,7 +251,7 @@ function innerOk(args, fn) { // Pure assertion tests whether a value is truthy, as determined // by !!value. function ok(...args) { - innerOk(args, ok); + innerOk(ok, args.length, ...args); } assert.ok = ok; @@ -563,7 +561,7 @@ assert.ifError = function ifError(err) { // Expose a strict only variant of assert function strict(...args) { - innerOk(args, strict); + innerOk(strict, args.length, ...args); } assert.strict = Object.assign(strict, assert, { equal: assert.strictEqual,