jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
http://stevenbenner.com/2010/03/javascript-regex-trick-parse-a-query-string-into-an-object/
<script>
var query = 'http://your.domain/product.aspx?category=4&product_id=2140&query=lcd+tv';
function split() {
var queryString = {};
query.split("?").pop().split("&").forEach(function (prop) {
var item = prop.split("=");
queryString[item[0]] = item[1];
});
return queryString;
}
function splitFor() {
var queryString = {},
parts = query.split("?").pop().split("&"),
i = 0, l = parts.length, item;
for (; i < l; i++) {
item = parts[i].split("=");
queryString[item[0]] = item[1];
}
return queryString;
}
function splitI(s, chars) {
var r = [];
var index = 0;
var i = 0;
var soFar = 0;
for (; s[i]; i++) {
if (chars.length == 1) {
if (s[i] == chars) {
r.push(s.substr(index, i - index));
index = i + 1;
}
}
else {
//if (s[i] == chars[soFar]) {
//}
}
}
if (i > index) {
r.push(s.substr(index, i - index));
}
return r;
}
function splitIndex() {
var queryString = {},
parts = splitI(splitI(query, "?")[0], "&"),
i = 0, l = parts.length, item;
for (; i < l; i++) {
item = splitI(parts[i], "=");
queryString[item[0]] = item[1];
}
return queryString;
}
function regex() {
var queryString = {};
query.replace(/([^?=&]+)(=([^&]*))?/g, function ($0, $1, $2, $3) {
queryString[$1] = $3;
});
return queryString;
}
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
regex |
| ready |
split |
| ready |
split with for loop |
| ready |
split with index |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.