编辑:这个问题主要集中在每个迭代中是否应该在for循环(10亿次的巨大循环)中声明对象,还是它最好在外部声明一次对象循环以节省对象声明期间(每次sprint中花费在内存分配上的时间)的时间。更好地在时间优化方面声明JavaScript对象for循环或外部
我想优化我的代码,确保我没有花费任何额外的时间为每个迭代中for循环中声明的对象分配内存。
我有一个很长的循环(说亿的顺序),它在每个数组迭代中创建巨大的对象,并推动这些对象到一个数组。我的问题是,如果最好在循环中声明对象或在外部声明它,以便JavaScript运行时不必为每个sprint中的对象分配内存。
这是我为百万计循环尝试的东西。尝试了十亿计数,但它并没有我的电脑上完成:
//Case 1: Object declared outside the for loop
function createObjInForLoopWithVarDeclaredOutside() {
var startTime = Date.now();
var obj; //object declared here so that memory allocation is done one time
var targetArray = [];
for(var i = 0; i < 1000000; i++) {
obj = {};
obj.id = i;
obj.value = 'value :: ' + i;
targetArray.push(obj);
}
var endTime = Date.now();
var timeTaken = endTime - startTime;
console.log('Time taken: ' + timeTaken);
}
时间由上述程序采取:505至525毫秒
//Case 2: Object declared and defined inside for loop for each sprint
function createObjInForLoopWithVarDeclaredInside() {
var startTime = Date.now();
var targetArray = [];
for(var i = 0; i < 1000000; i++) {
var obj = {};
obj.id = i;
obj.value = 'value :: ' + i;
targetArray.push(obj);
}
var endTime = Date.now();
var timeTaken = endTime - startTime;
console.log('Time taken: ' + timeTaken); //486 to 509
}
时间由上述程序采取:486至509毫秒
有人可以帮忙解释哪一种更好的方法来优化执行时间?第二种方法是在for循环中声明对象,我担心这可能需要更长的时间才能运行,因为每次迭代时,运行时都必须为新对象分配内存,这可能需要更长的时间。然而,使用我的分析数据,似乎在for循环内声明对象的第二种方法更好。在范围界定方面,我个人最喜欢的是在需要时对变量进行decalre,但对于如此巨大的for循环,我想查看各种运行时优化。
如果JavaScript在运行代码之前优化代码,我不确定是否需要此优化。
我会虚心地问为什么这个问题被拒绝投票的原因?我是新来的Stackoverflow,但我尽我所能将我所有的分析和示例代码放在我的问题中解释我的问题。如果我知道这里缺少什么,我将很感激,以便我可以将它用作未来的输入。谢谢! –