Y. *_*hii 10 javascript performance javascript-objects
简单的问题:在较深的物体上使用浅物体是否有价值?当我编写代码时,我倾向于使用深层对象,因此它易于理解和分类.但我想知道这个自定义是否使我的代码变慢.
我做了一个测试,但我不知道我是否正确地做了.
//building necessary objects
var a = {};
var b;
b = a;
for (var i = 0; i < 100; i++) {
b["a"] = {};
b = b["a"];
}
var c = {};
//objects used
//a.a.a. ..(101 "a"s).. .a === {}
//c === {}
//1st test: shallow
var d;
var start = performance.now();
for (var i = 0; i < 1000000000; i++) {
d = c;
d = null;
}
var end = performance.now();
console.log('Shallow: ' + (end - start));
//2nd test: deeper
var e;
var start = performance.now();
for (var i = 0; i < 1000000000; i++) {
e = a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a;
e = null;
}
var end = performance.now();
console.log('Deeper: ' + (end - start));Run Code Online (Sandbox Code Playgroud)
结果(ms):
shallow 3229 3304 3246 3253 3277
deep 3375 3343 3247 3193 3248
Run Code Online (Sandbox Code Playgroud)
深层物体的测试时间并不慢,但有时甚至比浅层物体的测试时间更快.尽管结果如此,但我没有足够的信心得出他们的速度相同的结论.两个人之间有什么区别吗?