最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js 優(yōu)化次數(shù)過多的循環(huán) 考慮到性能問題

 更新時(shí)間:2011年03月05日 23:55:15   作者:  
IE沒有我們想象中笨,它知道總的循環(huán)次數(shù)還是一千萬次。因此,得把這一百個(gè)十萬次循環(huán)分開執(zhí)行。雖然Javascript是單線程的,但也可以通過setTimeout或setInterval模擬多線程。
假設(shè)要生成一千萬個(gè)隨機(jī)數(shù),常規(guī)的做法如下:
復(fù)制代碼 代碼如下:

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

然而,在IE下執(zhí)行這段代碼時(shí),卻彈出了一個(gè)窗口提示用戶是否停止這段腳本。出現(xiàn)這種情況,首先想到的是優(yōu)化循環(huán)體。但明顯地,循環(huán)體很簡(jiǎn)單,沒什么優(yōu)化的余地。即使把循環(huán)體清空,提示仍然存在。于是,我得出了一個(gè)結(jié)論:在IE下,一旦循環(huán)次數(shù)超過了某個(gè)特定值,就會(huì)彈出停止腳本的提示。

原因找到了,該如何解決呢?我首先想到的是把一千萬次循環(huán)分成若干個(gè)次數(shù)較少的循環(huán)。比如分成一百次,每次執(zhí)行十萬次循環(huán):
復(fù)制代碼 代碼如下:

for (var i = 0, j; i < 100; i++) {
  for (j = 0; j < 100000; j++) {
    ......
  }
}

IE沒有我們想象中笨,它知道總的循環(huán)次數(shù)還是一千萬次。因此,得把這一百個(gè)十萬次循環(huán)分開執(zhí)行。雖然Javascript是單線程的,但也可以通過setTimeout或setInterval模擬多線程。整段代碼優(yōu)化如下:
復(fù)制代碼 代碼如下:

var numbers = [];
function begin() {
  for (var i = 0; i < 100000; i++) {
    numbers.push(Math.random());
  }
  if (numbers.length < 10000000) { // 是否已完成
    setTimeout(begin, 0);
  } else {
    alert("complete");
  }
}
begin();

相關(guān)文章

最新評(píng)論

昔阳县| 南江县| 应城市| 宁南县| 吉木萨尔县| 佳木斯市| 会理县| 武胜县| 玉溪市| 修文县| 平和县| 喀喇沁旗| 东乡族自治县| 新民市| 宜君县| 汶上县| 宝丰县| 邹平县| 宁夏| 瑞安市| 河北省| 若尔盖县| 东台市| 枣庄市| 白水县| 望都县| 临江市| 德清县| 中山市| 阜城县| 治多县| 柳林县| 木兰县| 汤阴县| 柳江县| 成安县| 正定县| 兴义市| 宁津县| 丽水市| 年辖:市辖区|