使用幼稚的方法来衡量性能,似乎使用“test2”方法稍微快一些:
var e0 = {a:1};
var e1 = {a:1};
var e2 = {a:1};
var e3 = {a:1};
var e4 = {a:1};
var e5 = {a:1};
var e6 = {a:1};
var e7 = {a:1};
var e8 = {a:1};
var e9 = {a:1};
var ref = [e0,e1,e2,e3,e4,e5,e6,e7,e8,e9];
var test1 = function() {
var a = [];
a.push(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9);
};
var test2 = function() {
var a = [];
a.push(e0);
a.push(e1);
a.push(e2);
a.push(e3);
a.push(e4);
a.push(e5);
a.push(e6);
a.push(e7);
a.push(e8);
a.push(e9);
};
function t1 () {
var tStart = new Date().valueOf();
for (var i = 0; i < 100000; i++) {
test1()
}
var tEnd = new Date().valueOf();
var tDelta = tEnd - tStart;
console.log(tDelta);
}
function t2 () {
var tStart = new Date().valueOf();
for (var i = 0; i < 100000; i++) {
test2()
}
var tEnd = new Date().valueOf();
var tDelta = tEnd - tStart;
console.log(tDelta);
}
console.log('t1'); t1();
console.log('t2'); t2();
输出:
t1
483
t2
523
但是,IMO 的“test1”方法更具可读性。就我个人而言,我会使用这种方法,因为我通常不担心 javascript 数组的性能。
编辑:确实我忘记了 t2 函数中的一个元素。修改了测试和结果。似乎更具可读性的形式也稍微(微不足道)更快。