Skip to content

Instantly share code, notes, and snippets.

@ololobus
Last active August 29, 2015 13:55
Show Gist options
  • Save ololobus/8781208 to your computer and use it in GitHub Desktop.
Save ololobus/8781208 to your computer and use it in GitHub Desktop.
Small script for a measurement of url parsing speed by RegEx and by <a> DOM-element
function parseByRegEx (url) {
var parser = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
parserKeys = ['source', 'protocol', 'authority',
'userInfo', 'user', 'password', 'host', 'port',
'relative', 'path', 'directory', 'file', 'query', 'anchor'],
m = parser.exec(url || ''),
parts = {};
parserKeys.forEach(function(key, i) {
parts[key] = m[i] || '';
});
return parts;
};
function parseByDOM (url) {
var link = window.document.createElement('a'),
parserKeys = ['href', 'protocol', 'hostname', 'port',
'pathname', 'search', 'hash'],
parts = {};
link.setAttribute('href', url);
parserKeys.forEach(function(key, i) {
parts[key] = link[key] || '';
});
return parts;
};
var domStartTime = Date.now();
for (var i=0; i < 1000; i++) {
parseByDOM('m.news.yandex.ru/yandsearch?rpt=nnews2&amp;grhow=clutop&amp;text=ololo#' + Date.now());
}
var domStopTime = Date.now();
console.log('DOM parser', domStopTime - domStartTime);
var regExStartTime = Date.now();
for (var i=0; i < 1000; i++) {
parseByRegEx('m.news.yandex.ru/yandsearch?rpt=nnews2&amp;grhow=clutop&amp;text=ololo#' + Date.now());
}
var regExStopTime = Date.now();
console.log('RegEx parser', regExStopTime - regExStartTime);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment