diff --git a/benchmark/README.md b/benchmark/README.md index 6fd9a97bdfb3bb..17c733e6eb0b6c 100644 --- a/benchmark/README.md +++ b/benchmark/README.md @@ -235,12 +235,3 @@ it returns to accomplish what they need. This function reports timing data to the parent process (usually created by running `compare.js`, `run.js` or `scatter.js`). -### v8ForceOptimization(method[, ...args]) - -Force V8 to mark the `method` for optimization with the native function -`%OptimizeFunctionOnNextCall()` and return the optimization status -after that. - -It can be used to prevent the benchmark from getting disrupted by the optimizer -kicking in halfway through. However, this could result in a less effective -optimization. In general, only use it if you know what it actually does. diff --git a/benchmark/buffers/buffer-compare-instance-method.js b/benchmark/buffers/buffer-compare-instance-method.js index bb07326f3de218..ff3bc4c1abda98 100644 --- a/benchmark/buffers/buffer-compare-instance-method.js +++ b/benchmark/buffers/buffer-compare-instance-method.js @@ -1,6 +1,5 @@ 'use strict'; const common = require('../common.js'); -const v8 = require('v8'); const bench = common.createBenchmark(main, { size: [16, 512, 1024, 4096, 16386], @@ -20,7 +19,6 @@ function main(conf) { b1[size - 1] = 'b'.charCodeAt(0); - // Force optimization before starting the benchmark switch (args) { case 2: b0.compare(b1, 0); @@ -37,8 +35,6 @@ function main(conf) { default: b0.compare(b1); } - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(b0.compare)'); switch (args) { case 2: b0.compare(b1, 0); diff --git a/benchmark/buffers/buffer-compare-offset.js b/benchmark/buffers/buffer-compare-offset.js index 17b36f82883426..fd8c96dbce0158 100644 --- a/benchmark/buffers/buffer-compare-offset.js +++ b/benchmark/buffers/buffer-compare-offset.js @@ -1,6 +1,5 @@ 'use strict'; const common = require('../common.js'); -const v8 = require('v8'); const bench = common.createBenchmark(main, { method: ['offset', 'slice'], @@ -9,18 +8,6 @@ const bench = common.createBenchmark(main, { }); function compareUsingSlice(b0, b1, len, iter) { - - // Force optimization before starting the benchmark - Buffer.compare(b0.slice(1, len), b1.slice(1, len)); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(Buffer.compare)'); - eval('%OptimizeFunctionOnNextCall(b0.slice)'); - eval('%OptimizeFunctionOnNextCall(b1.slice)'); - Buffer.compare(b0.slice(1, len), b1.slice(1, len)); - doCompareUsingSlice(b0, b1, len, iter); -} - -function doCompareUsingSlice(b0, b1, len, iter) { var i; bench.start(); for (i = 0; i < iter; i++) @@ -29,16 +16,6 @@ function doCompareUsingSlice(b0, b1, len, iter) { } function compareUsingOffset(b0, b1, len, iter) { - len = len + 1; - // Force optimization before starting the benchmark - b0.compare(b1, 1, len, 1, len); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(b0.compare)'); - b0.compare(b1, 1, len, 1, len); - doCompareUsingOffset(b0, b1, len, iter); -} - -function doCompareUsingOffset(b0, b1, len, iter) { var i; bench.start(); for (i = 0; i < iter; i++) diff --git a/benchmark/buffers/buffer-swap.js b/benchmark/buffers/buffer-swap.js index c6d7db470bc69a..71e08890910843 100644 --- a/benchmark/buffers/buffer-swap.js +++ b/benchmark/buffers/buffer-swap.js @@ -1,7 +1,6 @@ 'use strict'; const common = require('../common.js'); -const v8 = require('v8'); const bench = common.createBenchmark(main, { aligned: ['true', 'false'], @@ -81,9 +80,7 @@ function main(conf) { const buf = createBuffer(len, aligned === 'true'); const bufferSwap = genMethod(method); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(bufferSwap)'); - + bufferSwap(n, buf); bench.start(); bufferSwap(n, buf); bench.end(n); diff --git a/benchmark/common.js b/benchmark/common.js index 6a9b2ba0f71681..7ce180fdb7ff0a 100644 --- a/benchmark/common.js +++ b/benchmark/common.js @@ -229,17 +229,3 @@ Benchmark.prototype.report = function(rate, elapsed) { type: 'report' }); }; - -exports.v8ForceOptimization = function(method) { - if (typeof method !== 'function') - return; - - const v8 = require('v8'); - v8.setFlagsFromString('--allow_natives_syntax'); - - const args = Array.prototype.slice.call(arguments, 1); - method.apply(null, args); - eval('%OptimizeFunctionOnNextCall(method)'); - method.apply(null, args); - return eval('%GetOptimizationStatus(method)'); -}; diff --git a/benchmark/crypto/get-ciphers.js b/benchmark/crypto/get-ciphers.js index 257c9af2fd531e..3f5ad17ad38716 100644 --- a/benchmark/crypto/get-ciphers.js +++ b/benchmark/crypto/get-ciphers.js @@ -12,9 +12,12 @@ function main(conf) { const v = conf.v; const method = require(v).getCiphers; var i = 0; - - common.v8ForceOptimization(method); + // first call to getChipers will dominate the results + if (n > 1) { + for (; i < n; i++) + method(); + } bench.start(); - for (; i < n; i++) method(); + for (i = 0; i < n; i++) method(); bench.end(n); } diff --git a/benchmark/es/defaultparams-bench.js b/benchmark/es/defaultparams-bench.js index 1b962cfb39333f..56d04cd95bb454 100644 --- a/benchmark/es/defaultparams-bench.js +++ b/benchmark/es/defaultparams-bench.js @@ -22,8 +22,6 @@ function defaultParams(x = 1, y = 2) { function runOldStyleDefaults(n) { - common.v8ForceOptimization(oldStyleDefaults); - var i = 0; bench.start(); for (; i < n; i++) @@ -33,8 +31,6 @@ function runOldStyleDefaults(n) { function runDefaultParams(n) { - common.v8ForceOptimization(defaultParams); - var i = 0; bench.start(); for (; i < n; i++) diff --git a/benchmark/es/restparams-bench.js b/benchmark/es/restparams-bench.js index 0ff9c48dedc490..f5c49dd969b40a 100644 --- a/benchmark/es/restparams-bench.js +++ b/benchmark/es/restparams-bench.js @@ -35,8 +35,6 @@ function useArguments() { function runCopyArguments(n) { - common.v8ForceOptimization(copyArguments, 1, 2, 'a', 'b'); - var i = 0; bench.start(); for (; i < n; i++) @@ -46,8 +44,6 @@ function runCopyArguments(n) { function runRestArguments(n) { - common.v8ForceOptimization(restArguments, 1, 2, 'a', 'b'); - var i = 0; bench.start(); for (; i < n; i++) @@ -57,8 +53,6 @@ function runRestArguments(n) { function runUseArguments(n) { - common.v8ForceOptimization(useArguments, 1, 2, 'a', 'b'); - var i = 0; bench.start(); for (; i < n; i++) diff --git a/benchmark/misc/console.js b/benchmark/misc/console.js index 9a08a411c51f82..9c5aec0eeeb5fa 100644 --- a/benchmark/misc/console.js +++ b/benchmark/misc/console.js @@ -4,9 +4,6 @@ const common = require('../common.js'); const assert = require('assert'); const Writable = require('stream').Writable; const util = require('util'); -const v8 = require('v8'); - -v8.setFlagsFromString('--allow_natives_syntax'); const methods = [ 'restAndSpread', @@ -51,14 +48,7 @@ function usingArgumentsAndApplyC() { nullStream.write(util.format.apply(null, arguments) + '\n'); } -function optimize(method, ...args) { - method(...args); - eval(`%OptimizeFunctionOnNextCall(${method.name})`); - method(...args); -} - function runUsingRestAndConcat(n) { - optimize(usingRestAndConcat, 'a', 1); var i = 0; bench.start(); @@ -70,7 +60,6 @@ function runUsingRestAndConcat(n) { function runUsingRestAndSpread(n, concat) { const method = concat ? usingRestAndSpreadC : usingRestAndSpreadTS; - optimize(method, 'this is %s of %d', 'a', 1); var i = 0; bench.start(); @@ -82,7 +71,6 @@ function runUsingRestAndSpread(n, concat) { function runUsingRestAndApply(n, concat) { const method = concat ? usingRestAndApplyC : usingRestAndApplyTS; - optimize(method, 'this is %s of %d', 'a', 1); var i = 0; bench.start(); @@ -94,7 +82,6 @@ function runUsingRestAndApply(n, concat) { function runUsingArgumentsAndApply(n, concat) { const method = concat ? usingArgumentsAndApplyC : usingArgumentsAndApplyTS; - optimize(method, 'this is %s of %d', 'a', 1); var i = 0; bench.start(); diff --git a/benchmark/misc/punycode.js b/benchmark/misc/punycode.js index f4d22557ac5d65..74ddadbb9daa6c 100644 --- a/benchmark/misc/punycode.js +++ b/benchmark/misc/punycode.js @@ -42,16 +42,16 @@ function usingICU(val) { } function runPunycode(n, val) { - common.v8ForceOptimization(usingPunycode, val); var i = 0; - bench.start(); for (; i < n; i++) usingPunycode(val); + bench.start(); + for (i = 0; i < n; i++) + usingPunycode(val); bench.end(n); } function runICU(n, val) { - common.v8ForceOptimization(usingICU, val); var i = 0; bench.start(); for (; i < n; i++) diff --git a/benchmark/misc/util-extend-vs-object-assign.js b/benchmark/misc/util-extend-vs-object-assign.js index caea42ce914cf5..41c15d7d2caa0c 100644 --- a/benchmark/misc/util-extend-vs-object-assign.js +++ b/benchmark/misc/util-extend-vs-object-assign.js @@ -2,7 +2,6 @@ const common = require('../common.js'); const util = require('util'); -const v8 = require('v8'); const bench = common.createBenchmark(main, { type: ['extend', 'assign'], @@ -12,15 +11,11 @@ const bench = common.createBenchmark(main, { function main(conf) { let fn; const n = conf.n | 0; - let v8command; if (conf.type === 'extend') { fn = util._extend; - v8command = '%OptimizeFunctionOnNextCall(util._extend)'; } else if (conf.type === 'assign') { fn = Object.assign; - // Object.assign is built-in, cannot be optimized - v8command = ''; } // Force-optimize the method to test so that the benchmark doesn't @@ -28,9 +23,6 @@ function main(conf) { for (var i = 0; i < conf.type.length * 10; i += 1) fn({}, process.env); - v8.setFlagsFromString('--allow_natives_syntax'); - eval(v8command); - var obj = new Proxy({}, { set: function(a, b, c) { return true; } }); bench.start(); diff --git a/benchmark/path/basename-posix.js b/benchmark/path/basename-posix.js index 64da9017793440..fc983c8074c940 100644 --- a/benchmark/path/basename-posix.js +++ b/benchmark/path/basename-posix.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { pathext: [ @@ -30,12 +29,6 @@ function main(conf) { input = input.slice(0, extIdx); } - // Force optimization before starting the benchmark - p.basename(input, ext); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.basename)'); - p.basename(input, ext); - bench.start(); for (var i = 0; i < n; i++) { p.basename(input, ext); diff --git a/benchmark/path/basename-win32.js b/benchmark/path/basename-win32.js index a6214598790033..b493beb87c9e94 100644 --- a/benchmark/path/basename-win32.js +++ b/benchmark/path/basename-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { pathext: [ @@ -30,12 +29,6 @@ function main(conf) { input = input.slice(0, extIdx); } - // Force optimization before starting the benchmark - p.basename(input, ext); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.basename)'); - p.basename(input, ext); - bench.start(); for (var i = 0; i < n; i++) { p.basename(input, ext); diff --git a/benchmark/path/dirname-posix.js b/benchmark/path/dirname-posix.js index e7ea80ffa313c8..af77be5ac06559 100644 --- a/benchmark/path/dirname-posix.js +++ b/benchmark/path/dirname-posix.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -21,12 +20,6 @@ function main(conf) { var p = path.posix; var input = '' + conf.path; - // Force optimization before starting the benchmark - p.dirname(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.dirname)'); - p.dirname(input); - bench.start(); for (var i = 0; i < n; i++) { p.dirname(input); diff --git a/benchmark/path/dirname-win32.js b/benchmark/path/dirname-win32.js index 5cb0829437c2ed..01d97d08e2ae05 100644 --- a/benchmark/path/dirname-win32.js +++ b/benchmark/path/dirname-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -21,12 +20,6 @@ function main(conf) { var p = path.win32; var input = '' + conf.path; - // Force optimization before starting the benchmark - p.dirname(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.dirname)'); - p.dirname(input); - bench.start(); for (var i = 0; i < n; i++) { p.dirname(input); diff --git a/benchmark/path/extname-posix.js b/benchmark/path/extname-posix.js index 61a1073158f8d3..50c4e8f7927ba6 100644 --- a/benchmark/path/extname-posix.js +++ b/benchmark/path/extname-posix.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -24,12 +23,6 @@ function main(conf) { var p = path.posix; var input = '' + conf.path; - // Force optimization before starting the benchmark - p.extname(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.extname)'); - p.extname(input); - bench.start(); for (var i = 0; i < n; i++) { p.extname(input); diff --git a/benchmark/path/extname-win32.js b/benchmark/path/extname-win32.js index 67e53eab85817f..9c0df13ab46105 100644 --- a/benchmark/path/extname-win32.js +++ b/benchmark/path/extname-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -24,12 +23,6 @@ function main(conf) { var p = path.win32; var input = '' + conf.path; - // Force optimization before starting the benchmark - p.extname(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.extname)'); - p.extname(input); - bench.start(); for (var i = 0; i < n; i++) { p.extname(input); diff --git a/benchmark/path/format-posix.js b/benchmark/path/format-posix.js index b30b58be4118f0..ee78a6d5f30980 100644 --- a/benchmark/path/format-posix.js +++ b/benchmark/path/format-posix.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { props: [ @@ -22,12 +21,6 @@ function main(conf) { name: props[4] || '', }; - // Force optimization before starting the benchmark - p.format(obj); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.format)'); - p.format(obj); - bench.start(); for (var i = 0; i < n; i++) { p.format(obj); diff --git a/benchmark/path/format-win32.js b/benchmark/path/format-win32.js index 7404f2e93e6868..9ec981d6310ed6 100644 --- a/benchmark/path/format-win32.js +++ b/benchmark/path/format-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { props: [ @@ -22,12 +21,6 @@ function main(conf) { name: props[4] || '', }; - // Force optimization before starting the benchmark - p.format(obj); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.format)'); - p.format(obj); - bench.start(); for (var i = 0; i < n; i++) { p.format(obj); diff --git a/benchmark/path/isAbsolute-posix.js b/benchmark/path/isAbsolute-posix.js index fb8956c073b9db..22db751100ceee 100644 --- a/benchmark/path/isAbsolute-posix.js +++ b/benchmark/path/isAbsolute-posix.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -19,12 +18,6 @@ function main(conf) { var p = path.posix; var input = '' + conf.path; - // Force optimization before starting the benchmark - p.isAbsolute(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.isAbsolute)'); - p.isAbsolute(input); - bench.start(); for (var i = 0; i < n; i++) { p.isAbsolute(input); diff --git a/benchmark/path/isAbsolute-win32.js b/benchmark/path/isAbsolute-win32.js index 57fb8b8999e838..a565da8e566f8f 100644 --- a/benchmark/path/isAbsolute-win32.js +++ b/benchmark/path/isAbsolute-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -20,12 +19,6 @@ function main(conf) { var p = path.win32; var input = '' + conf.path; - // Force optimization before starting the benchmark - p.isAbsolute(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.isAbsolute)'); - p.isAbsolute(input); - bench.start(); for (var i = 0; i < n; i++) { p.isAbsolute(input); diff --git a/benchmark/path/join-posix.js b/benchmark/path/join-posix.js index 1222f4050aa6ab..a7cf3772522daa 100644 --- a/benchmark/path/join-posix.js +++ b/benchmark/path/join-posix.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { paths: [ @@ -15,12 +14,6 @@ function main(conf) { var p = path.posix; var args = ('' + conf.paths).split('|'); - // Force optimization before starting the benchmark - p.join.apply(null, args); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.join)'); - p.join.apply(null, args); - bench.start(); for (var i = 0; i < n; i++) { p.join.apply(null, args); diff --git a/benchmark/path/join-win32.js b/benchmark/path/join-win32.js index 86801859d56c3b..18c1e802a6bff1 100644 --- a/benchmark/path/join-win32.js +++ b/benchmark/path/join-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { paths: [ @@ -15,12 +14,6 @@ function main(conf) { var p = path.win32; var args = ('' + conf.paths).split('|'); - // Force optimization before starting the benchmark - p.join.apply(null, args); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.join)'); - p.join.apply(null, args); - bench.start(); for (var i = 0; i < n; i++) { p.join.apply(null, args); diff --git a/benchmark/path/makeLong-win32.js b/benchmark/path/makeLong-win32.js index d4b29d7e709b3e..fe5da425a5cd73 100644 --- a/benchmark/path/makeLong-win32.js +++ b/benchmark/path/makeLong-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -18,12 +17,6 @@ function main(conf) { var p = path.win32; var input = '' + conf.path; - // Force optimization before starting the benchmark - p._makeLong(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p._makeLong)'); - p._makeLong(input); - bench.start(); for (var i = 0; i < n; i++) { p._makeLong(input); diff --git a/benchmark/path/normalize-posix.js b/benchmark/path/normalize-posix.js index 19d6461ca51dcf..aec703cbe21242 100644 --- a/benchmark/path/normalize-posix.js +++ b/benchmark/path/normalize-posix.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -20,12 +19,6 @@ function main(conf) { var p = path.posix; var input = '' + conf.path; - // Force optimization before starting the benchmark - p.normalize(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.normalize)'); - p.normalize(input); - bench.start(); for (var i = 0; i < n; i++) { p.normalize(input); diff --git a/benchmark/path/normalize-win32.js b/benchmark/path/normalize-win32.js index 119f9797681113..356d399c3513ab 100644 --- a/benchmark/path/normalize-win32.js +++ b/benchmark/path/normalize-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -20,12 +19,6 @@ function main(conf) { var p = path.win32; var input = '' + conf.path; - // Force optimization before starting the benchmark - p.normalize(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.normalize)'); - p.normalize(input); - bench.start(); for (var i = 0; i < n; i++) { p.normalize(input); diff --git a/benchmark/path/parse-posix.js b/benchmark/path/parse-posix.js index ee4306fcd27496..997eec0452b74a 100644 --- a/benchmark/path/parse-posix.js +++ b/benchmark/path/parse-posix.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -21,15 +20,12 @@ function main(conf) { var p = path.posix; var input = '' + conf.path; - // Force optimization before starting the benchmark - p.parse(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.parse)'); - p.parse(input); - - bench.start(); for (var i = 0; i < n; i++) { p.parse(input); } + bench.start(); + for (i = 0; i < n; i++) { + p.parse(input); + } bench.end(n); } diff --git a/benchmark/path/parse-win32.js b/benchmark/path/parse-win32.js index 5a7b80f0ddb3da..2a95f758665377 100644 --- a/benchmark/path/parse-win32.js +++ b/benchmark/path/parse-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { path: [ @@ -22,15 +21,12 @@ function main(conf) { var p = path.win32; var input = '' + conf.path; - // Force optimization before starting the benchmark - p.parse(input); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.parse)'); - p.parse(input); - - bench.start(); for (var i = 0; i < n; i++) { p.parse(input); } + bench.start(); + for (i = 0; i < n; i++) { + p.parse(input); + } bench.end(n); } diff --git a/benchmark/path/relative-posix.js b/benchmark/path/relative-posix.js index 7544fb2dc67e7d..492b73c3e89f8a 100644 --- a/benchmark/path/relative-posix.js +++ b/benchmark/path/relative-posix.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { paths: [ @@ -26,15 +25,12 @@ function main(conf) { to = from.slice(delimIdx + 1); from = from.slice(0, delimIdx); } - - // Force optimization before starting the benchmark - p.relative(from, to); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.relative)'); - p.relative(from, to); + for (var i = 0; i < n; i++) { + p.relative(from, to); + } bench.start(); - for (var i = 0; i < n; i++) { + for (i = 0; i < n; i++) { p.relative(from, to); } bench.end(n); diff --git a/benchmark/path/relative-win32.js b/benchmark/path/relative-win32.js index 92531959c1c3aa..7e7620299eb16c 100644 --- a/benchmark/path/relative-win32.js +++ b/benchmark/path/relative-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { paths: [ @@ -25,14 +24,13 @@ function main(conf) { from = from.slice(0, delimIdx); } - // Force optimization before starting the benchmark - p.relative(from, to); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.relative)'); - p.relative(from, to); + // Warmup + for (var i = 0; i < n; i++) { + p.relative(from, to); + } bench.start(); - for (var i = 0; i < n; i++) { + for (i = 0; i < n; i++) { p.relative(from, to); } bench.end(n); diff --git a/benchmark/path/resolve-posix.js b/benchmark/path/resolve-posix.js index 93e5b82191a23a..d1364a8ac256c9 100644 --- a/benchmark/path/resolve-posix.js +++ b/benchmark/path/resolve-posix.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { paths: [ @@ -18,12 +17,6 @@ function main(conf) { var p = path.posix; var args = ('' + conf.paths).split('|'); - // Force optimization before starting the benchmark - p.resolve.apply(null, args); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.resolve)'); - p.resolve.apply(null, args); - bench.start(); for (var i = 0; i < n; i++) { p.resolve.apply(null, args); diff --git a/benchmark/path/resolve-win32.js b/benchmark/path/resolve-win32.js index dc0eb30e930049..6dfb38167c96bd 100644 --- a/benchmark/path/resolve-win32.js +++ b/benchmark/path/resolve-win32.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var path = require('path'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { paths: [ @@ -18,12 +17,6 @@ function main(conf) { var p = path.win32; var args = ('' + conf.paths).split('|'); - // Force optimization before starting the benchmark - p.resolve.apply(null, args); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.resolve)'); - p.resolve.apply(null, args); - bench.start(); for (var i = 0; i < n; i++) { p.resolve.apply(null, args); diff --git a/benchmark/querystring/querystring-parse.js b/benchmark/querystring/querystring-parse.js index 2e2ec1417bcd35..888ce6320a30d9 100644 --- a/benchmark/querystring/querystring-parse.js +++ b/benchmark/querystring/querystring-parse.js @@ -1,8 +1,6 @@ 'use strict'; var common = require('../common.js'); var querystring = require('querystring'); -var v8 = require('v8'); - var inputs = require('../fixtures/url-inputs.js').searchParams; var bench = common.createBenchmark(main, { @@ -14,21 +12,18 @@ function main(conf) { var type = conf.type; var n = conf.n | 0; var input = inputs[type]; + var i; - // Force-optimize querystring.parse() so that the benchmark doesn't get + // Optimize querystring.parse() so that the benchmark doesn't get // disrupted by the optimizer kicking in halfway through. - v8.setFlagsFromString('--allow_natives_syntax'); if (type !== 'multicharsep') { - querystring.parse(input); - eval('%OptimizeFunctionOnNextCall(querystring.parse)'); - querystring.parse(input); + for (i = 0; i < n; i += 1) + querystring.parse(input); } else { - querystring.parse(input, '&&&&&&&&&&'); - eval('%OptimizeFunctionOnNextCall(querystring.parse)'); - querystring.parse(input, '&&&&&&&&&&'); + for (i = 0; i < n; i += 1) + querystring.parse(input, '&&&&&&&&&&'); } - var i; if (type !== 'multicharsep') { bench.start(); for (i = 0; i < n; i += 1) diff --git a/benchmark/querystring/querystring-stringify.js b/benchmark/querystring/querystring-stringify.js index 5870a690555a0a..7e31a49e99e54c 100644 --- a/benchmark/querystring/querystring-stringify.js +++ b/benchmark/querystring/querystring-stringify.js @@ -1,7 +1,6 @@ 'use strict'; var common = require('../common.js'); var querystring = require('querystring'); -var v8 = require('v8'); var bench = common.createBenchmark(main, { type: ['noencode', 'encodemany', 'encodelast'], @@ -36,10 +35,6 @@ function main(conf) { for (var name in inputs) querystring.stringify(inputs[name]); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(querystring.stringify)'); - querystring.stringify(input); - bench.start(); for (var i = 0; i < n; i += 1) querystring.stringify(input); diff --git a/benchmark/streams/readable-bigread.js b/benchmark/streams/readable-bigread.js index 50f10c44119141..34d478fb478478 100644 --- a/benchmark/streams/readable-bigread.js +++ b/benchmark/streams/readable-bigread.js @@ -1,7 +1,6 @@ 'use strict'; const common = require('../common'); -const v8 = require('v8'); const Readable = require('stream').Readable; const bench = common.createBenchmark(main, { @@ -15,13 +14,6 @@ function main(conf) { function noop() {} s._read = noop; - // Force optimization before starting the benchmark - s.push(b); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(s.read)'); - s.push(b); - while (s.read(128)); - bench.start(); for (var k = 0; k < n; ++k) { for (var i = 0; i < 1e4; ++i) diff --git a/benchmark/streams/readable-bigunevenread.js b/benchmark/streams/readable-bigunevenread.js index ce6e41c5d30eac..d176166ae4f432 100644 --- a/benchmark/streams/readable-bigunevenread.js +++ b/benchmark/streams/readable-bigunevenread.js @@ -1,7 +1,6 @@ 'use strict'; const common = require('../common'); -const v8 = require('v8'); const Readable = require('stream').Readable; const bench = common.createBenchmark(main, { @@ -15,13 +14,6 @@ function main(conf) { function noop() {} s._read = noop; - // Force optimization before starting the benchmark - s.push(b); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(s.read)'); - s.push(b); - while (s.read(106)); - bench.start(); for (var k = 0; k < n; ++k) { for (var i = 0; i < 1e4; ++i) diff --git a/benchmark/streams/readable-boundaryread.js b/benchmark/streams/readable-boundaryread.js index 93a6616361ba18..1a0b7eb7ac9ddc 100644 --- a/benchmark/streams/readable-boundaryread.js +++ b/benchmark/streams/readable-boundaryread.js @@ -1,7 +1,6 @@ 'use strict'; const common = require('../common'); -const v8 = require('v8'); const Readable = require('stream').Readable; const bench = common.createBenchmark(main, { @@ -15,14 +14,6 @@ function main(conf) { function noop() {} s._read = noop; - // Force optimization before starting the benchmark - s.push(b); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(s.push)'); - eval('%OptimizeFunctionOnNextCall(s.read)'); - s.push(b); - while (s.read(32)); - bench.start(); for (var k = 0; k < n; ++k) { for (var i = 0; i < 1e4; ++i) diff --git a/benchmark/streams/readable-readall.js b/benchmark/streams/readable-readall.js index 07626fd7978b9a..be34afbeabc090 100644 --- a/benchmark/streams/readable-readall.js +++ b/benchmark/streams/readable-readall.js @@ -1,7 +1,6 @@ 'use strict'; const common = require('../common'); -const v8 = require('v8'); const Readable = require('stream').Readable; const bench = common.createBenchmark(main, { @@ -15,13 +14,6 @@ function main(conf) { function noop() {} s._read = noop; - // Force optimization before starting the benchmark - s.push(b); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(s.read)'); - s.push(b); - while (s.read()); - bench.start(); for (var k = 0; k < n; ++k) { for (var i = 0; i < 1e4; ++i) diff --git a/benchmark/streams/readable-unevenread.js b/benchmark/streams/readable-unevenread.js index 4a69bd97a94bcf..ebbc727ad23ec3 100644 --- a/benchmark/streams/readable-unevenread.js +++ b/benchmark/streams/readable-unevenread.js @@ -1,7 +1,6 @@ 'use strict'; const common = require('../common'); -const v8 = require('v8'); const Readable = require('stream').Readable; const bench = common.createBenchmark(main, { @@ -15,13 +14,6 @@ function main(conf) { function noop() {} s._read = noop; - // Force optimization before starting the benchmark - s.push(b); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(s.read)'); - s.push(b); - while (s.read(12)); - bench.start(); for (var k = 0; k < n; ++k) { for (var i = 0; i < 1e4; ++i) diff --git a/benchmark/tls/convertprotocols.js b/benchmark/tls/convertprotocols.js index 32da0fe6fde271..5d561455051a0c 100644 --- a/benchmark/tls/convertprotocols.js +++ b/benchmark/tls/convertprotocols.js @@ -12,8 +12,11 @@ function main(conf) { var i = 0; var m = {}; - common.v8ForceOptimization( - tls.convertNPNProtocols, ['ABC', 'XYZ123', 'FOO'], m); + // First call dominates results + if (n > 1) { + tls.convertNPNProtocols(['ABC', 'XYZ123', 'FOO'], m); + m = {}; + } bench.start(); for (; i < n; i++) tls.convertNPNProtocols(['ABC', 'XYZ123', 'FOO'], m); bench.end(n); diff --git a/benchmark/url/url-format.js b/benchmark/url/url-format.js index 886958406b91c5..771786d3350513 100644 --- a/benchmark/url/url-format.js +++ b/benchmark/url/url-format.js @@ -1,7 +1,6 @@ 'use strict'; const common = require('../common.js'); const url = require('url'); -const v8 = require('v8'); const inputs = { slashes: {slashes: true, host: 'localhost'}, @@ -24,9 +23,6 @@ function main(conf) { for (const name in inputs) url.format(inputs[name]); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(url.format)'); - bench.start(); for (var i = 0; i < n; i += 1) url.format(input); diff --git a/benchmark/url/url-resolve.js b/benchmark/url/url-resolve.js index 4335511ca6d2df..421a70ef6d59f1 100644 --- a/benchmark/url/url-resolve.js +++ b/benchmark/url/url-resolve.js @@ -1,7 +1,6 @@ 'use strict'; const common = require('../common.js'); const url = require('url'); -const v8 = require('v8'); const hrefs = require('../fixtures/url-inputs.js').urls; hrefs.noscheme = 'some.ran/dom/url.thing?oh=yes#whoo'; @@ -24,12 +23,6 @@ function main(conf) { const href = hrefs[conf.href]; const path = paths[conf.path]; - // Force-optimize url.resolve() so that the benchmark doesn't get - // disrupted by the optimizer kicking in halfway through. - url.resolve(href, path); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(url.resolve)'); - bench.start(); for (var i = 0; i < n; i += 1) url.resolve(href, path); diff --git a/benchmark/util/format.js b/benchmark/util/format.js index 8040554ba0861a..82e25b4c4c8127 100644 --- a/benchmark/util/format.js +++ b/benchmark/util/format.js @@ -2,7 +2,6 @@ const util = require('util'); const common = require('../common'); -const v8 = require('v8'); const types = [ 'string', 'number', @@ -29,12 +28,6 @@ function main(conf) { 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]);