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)); }