From 3ccb275139bb1b949e1d63ac8d91eddb130af32b Mon Sep 17 00:00:00 2001 From: Andreas Madsen Date: Fri, 29 Jan 2016 22:15:39 +0100 Subject: [PATCH] benchmark: merge url.js with url-resolve.js url.js was broken since it didn't use the common.js runner. This fixes that issue by merging it with url-resolve.js, which also benchmarks url.resolve. PR-URL: https://github.com/nodejs/node/pull/5177 Reviewed-By: James M Snell Reviewed-By: Rod Vagg --- benchmark/url/url-resolve.js | 37 +++++++++++++++++++++----------- benchmark/url/url.js | 41 ------------------------------------ 2 files changed, 25 insertions(+), 53 deletions(-) delete mode 100644 benchmark/url/url.js diff --git a/benchmark/url/url-resolve.js b/benchmark/url/url-resolve.js index 18f67e82e3..8372132e4d 100644 --- a/benchmark/url/url-resolve.js +++ b/benchmark/url/url-resolve.js @@ -3,30 +3,43 @@ var common = require('../common.js'); var url = require('url'); var v8 = require('v8'); +var hrefs = [ + 'http://example.com/', + 'http://nodejs.org/docs/latest/api/url.html#url_url_format_urlobj', + 'http://blog.nodejs.org/', + 'https://encrypted.google.com/search?q=url&q=site:npmjs.org&hl=en', + 'javascript:alert("node is awesome");', + 'some.ran/dom/url.thing?oh=yes#whoo' +]; + + +var paths = [ + '../../../../../etc/passwd', + '../foo/bar?baz=boom', + 'foo/bar', + 'http://nodejs.org', + './foo/bar?baz' +]; + var bench = common.createBenchmark(main, { - type: ['one'], - n: [1e5], + href: Object.keys(hrefs), + path: Object.keys(paths), + n: [1e5] }); function main(conf) { - var type = conf.type; var n = conf.n | 0; - - var inputs = { - one: ['http://example.com/', '../../../../../etc/passwd'], - }; - var input = inputs[type] || []; + var href = hrefs[conf.href]; + var path = paths[conf.path]; // Force-optimize url.resolve() so that the benchmark doesn't get // disrupted by the optimizer kicking in halfway through. - for (var name in inputs) - url.resolve(inputs[name][0], inputs[name][1]); - + 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(input[0], input[1]); + url.resolve(href, path); bench.end(n); } diff --git a/benchmark/url/url.js b/benchmark/url/url.js deleted file mode 100644 index 78fe7b6c56..0000000000 --- a/benchmark/url/url.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; -var url = require('url') -var n = 25 * 100; - -var urls = [ - 'http://nodejs.org/docs/latest/api/url.html#url_url_format_urlobj', - 'http://blog.nodejs.org/', - 'https://encrypted.google.com/search?q=url&q=site:npmjs.org&hl=en', - 'javascript:alert("node is awesome");', - 'some.ran/dom/url.thing?oh=yes#whoo' -]; - -var paths = [ - '../foo/bar?baz=boom', - 'foo/bar', - 'http://nodejs.org', - './foo/bar?baz' -]; - -benchmark('parse()', url.parse); -benchmark('format()', url.format); -paths.forEach(function(p) { - benchmark('resolve("' + p + '")', function(u) { - url.resolve(u, p) - }); -}); - -function benchmark(name, fun) { - var timestamp = process.hrtime(); - for (var i = 0; i < n; ++i) { - for (var j = 0, k = urls.length; j < k; ++j) fun(urls[j]); - } - timestamp = process.hrtime(timestamp); - - var seconds = timestamp[0]; - var nanos = timestamp[1]; - var time = seconds + nanos / 1e9; - var rate = n / time; - - console.log('misc/url.js %s: %s', name, rate.toPrecision(5)); -}