Skip to content

Instantly share code, notes, and snippets.

@cevek
Created February 9, 2017 16:11
Show Gist options
  • Save cevek/7021296bafaf399da19f02adefca8873 to your computer and use it in GitHub Desktop.
Save cevek/7021296bafaf399da19f02adefca8873 to your computer and use it in GitHub Desktop.
function getRandomObj(i) {
switch (i % 5) {
case 0:
return {a: 1, b: i, c: 3, d: "abc", k: true};
case 1:
return {c: "sadf", k: false};
case 2:
return {a: null, b: 45};
case 3:
return {a: null, b: 45, c: 2, d: "Asdaf"};
case 4:
return {d: "Asdaf", k: false};
}
}
function obj(n) {
console.time('obj');
for (var i = 0; i < n; i++) {
var prevNode = createObj(i === -1 ? null : {obj: getRandomObj(i)});
for (var j = 0; j < 10; j++) {
var node = updateObj(j === -1 ? null : {obj: getRandomObj(i)}, prevNode);
}
}
console.timeEnd('obj');
return node;
}
function arr(n) {
console.time('arr');
for (var i = 0; i < n; i++) {
var prevNode = createArr(i === -1 ? null : {obj: getRandomObj(i), arr: null});
for (var j = 0; j < 10; j++) {
var node = updateArr(j === -1 ? null : {obj: getRandomObj(i), arr: null}, prevNode);
}
}
console.timeEnd('arr');
return node;
}
function createArr(node) {
var arr = [];
for (var key in node.obj) {
arr[arr.length] = key;
arr[arr.length] = node.obj[key];
}
node.arr = arr;
return node;
}
function updateArr(node, prevNode) {
var arr = [];
for (var key in node.obj) {
arr[arr.length] = key;
arr[arr.length] = node.obj[key];
}
node.arr = arr;
/*
var max = Math.min(node.arr.length, prevNode.arr.length);
for (var i = 0; i < max; i++) {
if (node.arr[i] !== prevNode.arr[i]) {
update(node, prevNode, node.arr[i], prevNode.arr[i]);
}
}
for (var i = max; i < prevNode.length; i++) {
remove(node, prevNode.arr[i]);
}
for (var i = max; i < node.length; i++) {
add(node, node.arr[i]);
}*/
return node;
}
function createObj(node) {
for (var key in node.obj) {
var value = node.obj[key];
}
return node;
}
function updateObj(node, prevNode) {
for (var key in node.obj) {
var val = node.obj[key];
var prevVal = prevNode.obj[key];
if (val !== prevVal) {
if (prevVal === void 0) {
add(node, val);
} else {
update(node, val);
}
}
}
for (var key2 in prevNode.obj) {
var val = node.obj[key2];
var prevVal = prevNode.obj[key2];
if (val !== prevVal) {
if (val === void 0) {
remove(node, val);
}
}
}
}
function remove(node, val) {
}
function add(node, val) {
}
function update(node, oldNode, val, oldVal) {
}
// obj(1e5);
arr(1e5);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment