Heim >Web-Frontend >js-Tutorial >js 优化次数过多的循环 考虑到性能问题_javascript技巧

js 优化次数过多的循环 考虑到性能问题_javascript技巧

WBOY
WBOYOriginal
2016-05-16 18:09:411438Durchsuche

假设要生成一千万个随机数,常规的做法如下:

复制代码 代码如下:

var numbers = [];
for (var i = 0; i   numbers.push(Math.random());
}

然而,在IE下执行这段代码时,却弹出了一个窗口提示用户是否停止这段脚本。出现这种情况,首先想到的是优化循环体。但明显地,循环体很简单,没什么优化的余地。即使把循环体清空,提示仍然存在。于是,我得出了一个结论:在IE下,一旦循环次数超过了某个特定值,就会弹出停止脚本的提示。

原因找到了,该如何解决呢?我首先想到的是把一千万次循环分成若干个次数较少的循环。比如分成一百次,每次执行十万次循环:
复制代码 代码如下:

for (var i = 0, j; i   for (j = 0; j     ......
  }
}

IE没有我们想象中笨,它知道总的循环次数还是一千万次。因此,得把这一百个十万次循环分开执行。虽然Javascript是单线程的,但也可以通过setTimeout或setInterval模拟多线程。整段代码优化如下:
复制代码 代码如下:

var numbers = [];
function begin() {
  for (var i = 0; i     numbers.push(Math.random());
  }
  if (numbers.length     setTimeout(begin, 0);
  } else {
    alert("complete");
  }
}
begin();
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn