summaryrefslogtreecommitdiff
path: root/benchmark/url
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2016-05-31 11:52:19 -0700
committerJames M Snell <jasnell@gmail.com>2016-10-11 12:41:42 -0700
commit4b312387ead4ba11146b28b8ac05ed385919c4af (patch)
treefd73b23a01d77c7024dc90402f1ec9cd9d2d479f /benchmark/url
parent88323e874473d18cce22d6ae134a056919c457e4 (diff)
downloadnode-new-4b312387ead4ba11146b28b8ac05ed385919c4af.tar.gz
url: adding WHATWG URL support
Implements WHATWG URL support. Example: ``` var u = new url.URL('http://example.org'); ``` Currently passing all WHATWG url parsing tests and all but two of the setter tests. The two setter tests are intentionally skipped for now but will be revisited. PR-URL: https://github.com/nodejs/node/pull/7448 Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
Diffstat (limited to 'benchmark/url')
-rw-r--r--benchmark/url/new-url-parse.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/benchmark/url/new-url-parse.js b/benchmark/url/new-url-parse.js
new file mode 100644
index 0000000000..ef60e81847
--- /dev/null
+++ b/benchmark/url/new-url-parse.js
@@ -0,0 +1,57 @@
+'use strict';
+const common = require('../common.js');
+const url = require('url');
+const v8 = require('v8');
+
+const bench = common.createBenchmark(main, {
+ type: 'one two three four five'.split(' '),
+ method: ['old', 'new'],
+ n: [25e4]
+});
+
+function useOld(n, input) {
+ // Force-optimize url.parse() so that the benchmark doesn't get
+ // disrupted by the optimizer kicking in halfway through.
+ url.parse(input);
+ v8.setFlagsFromString('--allow_natives_syntax');
+ eval('%OptimizeFunctionOnNextCall(url.parse)');
+
+ bench.start();
+ for (var i = 0; i < n; i += 1)
+ url.parse(input);
+ bench.end(n);
+}
+
+function useNew(n, input) {
+ bench.start();
+ for (var i = 0; i < n; i += 1)
+ new url.URL(input);
+ bench.end(n);
+}
+
+function main(conf) {
+ const type = conf.type;
+ const n = conf.n | 0;
+ const method = conf.method;
+
+ var inputs = {
+ one: 'http://nodejs.org/docs/latest/api/url.html#url_url_format_urlobj',
+ two: 'http://blog.nodejs.org/',
+ three: 'https://encrypted.google.com/search?q=url&q=site:npmjs.org&hl=en',
+ four: 'javascript:alert("node is awesome");',
+ //five: 'some.ran/dom/url.thing?oh=yes#whoo',
+ five: 'https://user:pass@example.com/',
+ };
+ var input = inputs[type] || '';
+
+ switch (method) {
+ case 'old':
+ useOld(n, input);
+ break;
+ case 'new':
+ useNew(n, input);
+ break;
+ default:
+ throw new Error('Unknown method');
+ }
+}