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
<script>
var object = {
"foo[0].bar": true,
"foo[1].baz": false
};
function controlUnflatten(data) {
"use strict";
if (Object(data) !== data || Array.isArray(data))
return data;
var result = {}, cur, prop, parts, idx;
for(var p in data) {
cur = result, prop = "";
parts = p.split(".");
for(var i=0; i<parts.length; i++) {
idx = !isNaN(parseInt(parts[i]));
cur = cur[prop] || (cur[prop] = (idx ? [] : {}));
prop = parts[i];
}
cur[prop] = data[p];
}
return result[""];
}
function testUnflatten(table) {
var result = {};
for (var path in table) {
var cursor = result, length = path.length, property = "", index = 0;
while (index < length) {
var char = path.charAt(index);
if (char === "[") {
var start = index + 1,
end = path.indexOf("]", start),
cursor = cursor[property] = cursor[property] || [],
property = path.slice(start, end),
index = end + 1;
} else {
var cursor = cursor[property] = cursor[property] || {},
start = char === "." ? index + 1 : index,
bracket = path.indexOf("[", start),
dot = path.indexOf(".", start);
if (bracket < 0 && dot < 0) var end = index = length;
else if (bracket < 0) var end = index = dot;
else if (dot < 0) var end = index = bracket;
else var end = index = bracket < dot ? bracket : dot;
var property = path.slice(start, end);
}
}
cursor[property] = table[path];
}
return result[""];
}
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
Test unflatten |
| ready |
Control unflatten |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.